Skip to main content

psutil is a cross-platform library for retrieving information onrunning processes and system utilization (CPU, memory, disks, network)in Python.

Project description

Downloads this month Linux tests (Travis) Windows tests (Appveyor) Test coverage (coverall.io) Latest version Github stars Code quality (scrutinizer-ci.com) License

Summary

psutil (python system and process utilities) is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network) in Python. It is useful mainly for system monitoring, profiling and limiting process resources and management of running processes. It implements many functionalities offered by command line tools such as: ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap. It currently supports Linux, Windows, OSX, FreeBSD and Sun Solaris, both 32-bit and 64-bit architectures, with Python versions from 2.6 to 3.5 (users of Python 2.4 and 2.5 may use 2.1.3 version). PyPy is also known to work.

Example applications

top nettop iotop

See also:

Example usages

CPU

>>> import psutil
>>> psutil.cpu_times()
scputimes(user=3961.46, nice=169.729, system=2150.659, idle=16900.540, iowait=629.59, irq=0.0, softirq=19.42, steal=0.0, guest=0, nice=0.0)
>>>
>>> for x in range(3):
...     psutil.cpu_percent(interval=1)
...
4.0
5.9
3.8
>>>
>>> for x in range(3):
...     psutil.cpu_percent(interval=1, percpu=True)
...
[4.0, 6.9, 3.7, 9.2]
[7.0, 8.5, 2.4, 2.1]
[1.2, 9.0, 9.9, 7.2]
>>>
>>>
>>> for x in range(3):
...     psutil.cpu_times_percent(interval=1, percpu=False)
...
scputimes(user=1.5, nice=0.0, system=0.5, idle=96.5, iowait=1.5, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
scputimes(user=1.0, nice=0.0, system=0.0, idle=99.0, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
scputimes(user=2.0, nice=0.0, system=0.0, idle=98.0, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
>>>
>>> psutil.cpu_count()
4
>>> psutil.cpu_count(logical=False)
2
>>>

Memory

>>> psutil.virtual_memory()
svmem(total=8374149120, available=2081050624, percent=75.1, used=8074080256, free=300068864, active=3294920704, inactive=1361616896, buffers=529895424, cached=1251086336)
>>> psutil.swap_memory()
sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)
>>>

Disks

>>> psutil.disk_partitions()
[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),
 sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw')]
>>>
>>> psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
>>>
>>> psutil.disk_io_counters(perdisk=False)
sdiskio(read_count=719566, write_count=1082197, read_bytes=18626220032, write_bytes=24081764352, read_time=5023392, write_time=63199568)
>>>

Network

>>> psutil.net_io_counters(pernic=True)
{'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0),
 'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}
>>>
>>> psutil.net_connections()
[pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 48776), raddr=('93.186.135.91', 80), status='ESTABLISHED', pid=1254),
 pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 43761), raddr=('72.14.234.100', 80), status='CLOSING', pid=2987),
 pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 60759), raddr=('72.14.234.104', 80), status='ESTABLISHED', pid=None),
 pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 51314), raddr=('72.14.234.83', 443), status='SYN_SENT', pid=None)
 ...]
>>>
>>> psutil.net_if_addrs()
{'lo': [snic(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1'),
        snic(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None),
        snic(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00')],
 'wlan0': [snic(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255'),
           snic(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None),
           snic(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff')]}
>>>
>>> psutil.net_if_stats()
{'eth0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500),
 'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536)}

Other system info

>>> psutil.users()
[user(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0),
 user(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0)]
>>>
>>> psutil.boot_time()
1365519115.0
>>>

Process management

>>> import psutil
>>> psutil.pids()
[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224,
 268, 1215, 1216, 1220, 1221, 1243, 1244, 1301, 1601, 2237, 2355,
 2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245,
 4263, 4282, 4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358,
 4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446, 5167, 5234, 5235,
 5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]
>>>
>>> p = psutil.Process(7055)
>>> p.name()
'python'
>>> p.exe()
'/usr/bin/python'
>>> p.cwd()
'/home/giampaolo'
>>> p.cmdline()
['/usr/bin/python', 'main.py']
>>>
>>> p.status()
'running'
>>> p.username()
'giampaolo'
>>> p.create_time()
1267551141.5019531
>>> p.terminal()
'/dev/pts/0'
>>>
>>> p.uids()
puids(real=1000, effective=1000, saved=1000)
>>> p.gids()
pgids(real=1000, effective=1000, saved=1000)
>>>
>>> p.cpu_times()
pcputimes(user=1.02, system=0.31)
>>> p.cpu_percent(interval=1.0)
12.1
>>> p.cpu_affinity()
[0, 1, 2, 3]
>>> p.cpu_affinity([0])  # set
>>>
>>> p.memory_percent()
0.63423
>>>
>>> p.memory_info()
pmem(rss=7471104, vms=68513792)
>>> p.memory_info_ex()
extmem(rss=9662464, vms=49192960, shared=3612672, text=2564096, lib=0, data=5754880, dirty=0)
>>> p.memory_maps()
[pmmap_grouped(path='/lib/x86_64-linux-gnu/libutil-2.15.so', rss=16384, anonymous=8192, swap=0),
 pmmap_grouped(path='/lib/x86_64-linux-gnu/libc-2.15.so', rss=6384, anonymous=15, swap=0),
 pmmap_grouped(path='/lib/x86_64-linux-gnu/libcrypto.so.1.0.0', rss=34124, anonymous=1245, swap=0),
 pmmap_grouped(path='[heap]', rss=54653, anonymous=8192, swap=0),
 pmmap_grouped(path='[stack]', rss=1542, anonymous=166, swap=0),
 ...]
>>>
>>> p.io_counters()
pio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632)
>>>
>>> p.open_files()
[popenfile(path='/home/giampaolo/svn/psutil/somefile', fd=3)]
>>>
>>> p.connections()
[pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 48776), raddr=('93.186.135.91', 80), status='ESTABLISHED'),
 pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 43761), raddr=('72.14.234.100', 80), status='CLOSING'),
 pconn(fd=119, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 60759), raddr=('72.14.234.104', 80), status='ESTABLISHED'),
 pconn(fd=123, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=('10.0.0.1', 51314), raddr=('72.14.234.83', 443), status='SYN_SENT')]
>>>
>>> p.num_threads()
4
>>> p.num_fds()
8
>>> p.threads()
[pthread(id=5234, user_time=22.5, system_time=9.2891),
 pthread(id=5235, user_time=0.0, system_time=0.0),
 pthread(id=5236, user_time=0.0, system_time=0.0),
 pthread(id=5237, user_time=0.0707, system_time=1.1)]
>>>
>>> p.num_ctx_switches()
pctxsw(voluntary=78, involuntary=19)
>>>
>>> p.nice()
0
>>> p.nice(10)  # set
>>>
>>> p.ionice(psutil.IOPRIO_CLASS_IDLE)  # IO priority (Win and Linux only)
>>> p.ionice()
pionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0)
>>>
>>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5))  # set resource limits (Linux only)
>>> p.rlimit(psutil.RLIMIT_NOFILE)
(5, 5)
>>>
>>> p.suspend()
>>> p.resume()
>>>
>>> p.terminate()
>>> p.wait(timeout=3)
0
>>>
>>> psutil.test()
USER         PID %CPU %MEM     VSZ     RSS TTY        START    TIME  COMMAND
root           1  0.0  0.0   24584    2240            Jun17   00:00  init
root           2  0.0  0.0       0       0            Jun17   00:00  kthreadd
root           3  0.0  0.0       0       0            Jun17   00:05  ksoftirqd/0
...
giampaolo  31475  0.0  0.0   20760    3024 /dev/pts/0 Jun19   00:00  python2.4
giampaolo  31721  0.0  2.2  773060  181896            00:04   10:30  chrome
root       31763  0.0  0.0       0       0            00:05   00:00  kworker/0:1
>>>

Further process APIs

>>> for p in psutil.process_iter():
...     print(p)
...
psutil.Process(pid=1, name='init')
psutil.Process(pid=2, name='kthreadd')
psutil.Process(pid=3, name='ksoftirqd/0')
...
>>>
>>> def on_terminate(proc):
...     print("process {} terminated".format(proc))
...
>>> # waits for multiple processes to terminate
>>> gone, alive = psutil.wait_procs(procs_list, 3, callback=on_terminate)
>>>

Mailing list

http://groups.google.com/group/psutil/

Timeline

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

psutil-3.1.1.tar.gz (247.3 kB view details)

Uploaded Source

Built Distributions

psutil-3.1.1.win-amd64-py3.4.exe (324.6 kB view details)

Uploaded Source

psutil-3.1.1.win-amd64-py3.3.exe (324.6 kB view details)

Uploaded Source

psutil-3.1.1.win-amd64-py2.7.exe (326.3 kB view details)

Uploaded Source

psutil-3.1.1.win32-py3.4.exe (291.1 kB view details)

Uploaded Source

psutil-3.1.1.win32-py3.3.exe (291.0 kB view details)

Uploaded Source

psutil-3.1.1.win32-py2.7.exe (296.1 kB view details)

Uploaded Source

psutil-3.1.1.win32-py2.6.exe (296.3 kB view details)

Uploaded Source

psutil-3.1.1-cp34-none-win_amd64.whl (89.9 kB view details)

Uploaded CPython 3.4 Windows x86-64

psutil-3.1.1-cp34-none-win32.whl (87.6 kB view details)

Uploaded CPython 3.4 Windows x86

psutil-3.1.1-cp33-none-win_amd64.whl (89.9 kB view details)

Uploaded CPython 3.3 Windows x86-64

psutil-3.1.1-cp33-none-win32.whl (87.6 kB view details)

Uploaded CPython 3.3 Windows x86

psutil-3.1.1-cp27-none-win_amd64.whl (90.1 kB view details)

Uploaded CPython 2.7 Windows x86-64

psutil-3.1.1-cp27-none-win32.whl (87.6 kB view details)

Uploaded CPython 2.7 Windows x86

psutil-3.1.1-cp26-none-win32.whl (87.7 kB view details)

Uploaded CPython 2.6 Windows x86

File details

Details for the file psutil-3.1.1.tar.gz.

File metadata

  • Download URL: psutil-3.1.1.tar.gz
  • Upload date:
  • Size: 247.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for psutil-3.1.1.tar.gz
Algorithm Hash digest
SHA256 d3290bd4a027fa0b3a2e2ee87728056fe49d4112640e2b8c2ea4dd94ba0cf057
MD5 b34360627efb429cb18a4a3143b18c8c
BLAKE2b-256 8db3954de176aa8e3a7782bae52ce938f24726c2c68d0f4c60d159271b6b293d

See more details on using hashes here.

File details

Details for the file psutil-3.1.1.win-amd64-py3.4.exe.

File metadata

File hashes

Hashes for psutil-3.1.1.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 46cbfd86d6762e63c7df4ab0df889f6f2fffa9b5781ea3fc0431237f2a408382
MD5 5a3b299a03e4803c81523e7a5ff65d2c
BLAKE2b-256 88d4ca15a913ab43222e308774845317544e765718a9e56bd4efe5b3cedf1fbd

See more details on using hashes here.

File details

Details for the file psutil-3.1.1.win-amd64-py3.3.exe.

File metadata

File hashes

Hashes for psutil-3.1.1.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 e7cc26f661c9eaa9b32d0543dd7838daea72aad6e9f02fe73715ffd0dcb65170
MD5 016ca9ca15b552dc9aa4b8423e817eba
BLAKE2b-256 2f84ae41f6bb61d4a93399c621218f99b761171a69a0c9163b9a72db1d53d62a

See more details on using hashes here.

File details

Details for the file psutil-3.1.1.win-amd64-py2.7.exe.

File metadata

File hashes

Hashes for psutil-3.1.1.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 9c4fd3cc19bbc04eaa7ef3c61e3db26a41ac5e056f770977211d4569d0bf0086
MD5 9a09376399f71c6647cf5112ab2fa6dc
BLAKE2b-256 e8ac7fb95ccc69ced76d0920e411b2fdfd3d38398c4bce53ec1dae92800df88a

See more details on using hashes here.

File details

Details for the file psutil-3.1.1.win32-py3.4.exe.

File metadata

File hashes

Hashes for psutil-3.1.1.win32-py3.4.exe
Algorithm Hash digest
SHA256 3003d8be6e86eb6beb990863a88950f9b9fe53ccaae92edcd8efcd152d7451ea
MD5 05f47c7c2d2663902b7d0ae080235517
BLAKE2b-256 7bcdaccf3d7e37006bffe7a569e4fc587eb686d275a19a4e8a37a12930a1e2db

See more details on using hashes here.

File details

Details for the file psutil-3.1.1.win32-py3.3.exe.

File metadata

File hashes

Hashes for psutil-3.1.1.win32-py3.3.exe
Algorithm Hash digest
SHA256 c8ab17e07ea4907d2f9129254e82b6765ae08e61f0ce6dc8e2fc1faf145b166c
MD5 8e518a6a74512d707d12b73ed23af8c6
BLAKE2b-256 8349ff116fb9981ef04a5aed1c091ace117c214ed752d37be267ea4e2f28efad

See more details on using hashes here.

File details

Details for the file psutil-3.1.1.win32-py2.7.exe.

File metadata

File hashes

Hashes for psutil-3.1.1.win32-py2.7.exe
Algorithm Hash digest
SHA256 e0065e7cade4ac5ac70411674bc32326dee8d11c44469012a2b5164bf6dea97a
MD5 da7d790ff07538082c2dd5494fc369b0
BLAKE2b-256 6bfe51596968f5a6a0970d9424021989f542d5aa715fe21d1a9c6bbbb0e377a9

See more details on using hashes here.

File details

Details for the file psutil-3.1.1.win32-py2.6.exe.

File metadata

File hashes

Hashes for psutil-3.1.1.win32-py2.6.exe
Algorithm Hash digest
SHA256 9efbd578d2f400dfe0ecab123b58d8af105854fdbb6222f841151e010e820b75
MD5 96462c167bf1bc80f598ba831c1f4fc5
BLAKE2b-256 0cf6e81385c7ec989157eb68688a64a69c5a7477ff93d544893a9e1f251588b1

See more details on using hashes here.

File details

Details for the file psutil-3.1.1-cp34-none-win_amd64.whl.

File metadata

File hashes

Hashes for psutil-3.1.1-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 4be182c273758dcdbd30827fdeecd889e27cb6a30238798e91bddeebc29cdc4f
MD5 5c2f83e095ac66203f06fa955e4dc782
BLAKE2b-256 ec2e8d98579399bc1979904455df182a063dd584b285ee8c141f3c94e7814c47

See more details on using hashes here.

File details

Details for the file psutil-3.1.1-cp34-none-win32.whl.

File metadata

File hashes

Hashes for psutil-3.1.1-cp34-none-win32.whl
Algorithm Hash digest
SHA256 8f25aad572bde88d5ee0b3a11a75ff2ae3c8b0a334c4128d6f8eb4fc95172734
MD5 5e6fdbc743a6fc8e1a636a79d09fb2c5
BLAKE2b-256 0210439ec497e3e38a8c493d0c67c56e23d106b85c8b9f616e8df9ec6ce1e606

See more details on using hashes here.

File details

Details for the file psutil-3.1.1-cp33-none-win_amd64.whl.

File metadata

File hashes

Hashes for psutil-3.1.1-cp33-none-win_amd64.whl
Algorithm Hash digest
SHA256 f9be0ae975b55a3b5d5a8b769560096d76184b60a56c6e88ff6b7ebecf1bc684
MD5 c2bf0d8a1b36d15f4edb2d4257ad3998
BLAKE2b-256 eb13a38bc1e0ac6f7c42dddd9c17a206877befb822ba3af9c3b0dab9e85911a6

See more details on using hashes here.

File details

Details for the file psutil-3.1.1-cp33-none-win32.whl.

File metadata

File hashes

Hashes for psutil-3.1.1-cp33-none-win32.whl
Algorithm Hash digest
SHA256 f3d68eb44ba49e24a18d6f7934463478294a49152f97fea2eefe1e1e1ee957f3
MD5 bb713f48fc8d714672b6dc42c924e7d5
BLAKE2b-256 cb960eb8eb289681364d2cda2a22a7d1abeb0196b321ab95694335dd178a5b35

See more details on using hashes here.

File details

Details for the file psutil-3.1.1-cp27-none-win_amd64.whl.

File metadata

File hashes

Hashes for psutil-3.1.1-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 da7650e2f3fcf06419d5ad75123e6c68b9bf5ff2a6c91d4c77aaed8e6f444fc4
MD5 84145eaee006b84c5f104c05b832ac22
BLAKE2b-256 fa5b8834e22cc22b6b0e9c2c68e240ab69754bed7c4c5388fb65abfa716f4a67

See more details on using hashes here.

File details

Details for the file psutil-3.1.1-cp27-none-win32.whl.

File metadata

File hashes

Hashes for psutil-3.1.1-cp27-none-win32.whl
Algorithm Hash digest
SHA256 5b7228cb69fdaea5aeb901704f5ecd21b7846aa60c2c8d408f22573fcbaa7e6f
MD5 4f5942a6a07fbacf9650f646bf76dfe5
BLAKE2b-256 0760c88366202816ba42b3d8e93e793c14d1ac5e71be30dd53c2d0117c106eec

See more details on using hashes here.

File details

Details for the file psutil-3.1.1-cp26-none-win32.whl.

File metadata

File hashes

Hashes for psutil-3.1.1-cp26-none-win32.whl
Algorithm Hash digest
SHA256 13a6377cc8d2859f846058170830127822877e05229c4a43aea893cdcb504d65
MD5 b311b18afb16f306e3f5f30d686afca3
BLAKE2b-256 e19e721afc99b6fe467b47fa2cad6899acc19b45dee32d30b498dc731b6c09ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page