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.0.tar.gz (246.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

psutil-3.1.0.win-amd64-py3.4.exe (324.5 kB view details)

Uploaded Source

psutil-3.1.0.win-amd64-py3.3.exe (324.5 kB view details)

Uploaded Source

psutil-3.1.0.win-amd64-py2.7.exe (326.2 kB view details)

Uploaded Source

psutil-3.1.0.win32-py3.4.exe (291.0 kB view details)

Uploaded Source

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

Uploaded Source

psutil-3.1.0.win32-py2.7.exe (296.0 kB view details)

Uploaded Source

psutil-3.1.0.win32-py2.6.exe (296.2 kB view details)

Uploaded Source

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

Uploaded CPython 3.4Windows x86-64

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

Uploaded CPython 3.4Windows x86

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

Uploaded CPython 3.3Windows x86-64

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

Uploaded CPython 3.3Windows x86

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

Uploaded CPython 2.7Windows x86-64

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

Uploaded CPython 2.7Windows x86

psutil-3.1.0-cp26-none-win32.whl (87.8 kB view details)

Uploaded CPython 2.6Windows x86

File details

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

File metadata

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

File hashes

Hashes for psutil-3.1.0.tar.gz
Algorithm Hash digest
SHA256 4cdfeb2a328b6f8a2937f9b21f513c8aeda96dc076ecafda424f5c401dbad876
MD5 8b8fb3301e85c2dd3bbe91d75db261e8
BLAKE2b-256 ced2ab7f80718b4eafb2e474b8b410274d2c0d65341b963d730e653be9ed0ec8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 2aea29ca2a5ea318155fb856f24e6c7563c8741ccfeec862f0fd9af0f2d8ae87
MD5 913d051de00c98aa535a1c9190453123
BLAKE2b-256 da76dcefdcf88fd51becaff6c1ec0ba7566ca654a207fe6d69662723c645e3b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 578a52f4b108857273d1e32de4d9bebf9b8f842f8c53ab3e242252cfc9bde295
MD5 15c63218437dfc96464ab7cb09c33bb2
BLAKE2b-256 00512dc07e5618adb4a3676ab6c9c1759a3f268eda91808d58f45eb4dfd3d2c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 6570fb3ddde83597e11c062e20ab86210ff84a1fa97e54bc8bda05e4cd34670a
MD5 48e7c8b54031a3bc4cb4f89b68ac5f04
BLAKE2b-256 26f5c76bf7ef62736913146b0482879705d1d877c9334092a0739f2b3bbae162

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0.win32-py3.4.exe
Algorithm Hash digest
SHA256 8e637fe2a23fad4f4ea8ae11402b593e09fc587b86a6ced40b6bc1017be8d978
MD5 eb4504f7da8493a512a6f038a502a25c
BLAKE2b-256 533f249ff2e418313f30a6dcc4995966725f72b00493848ffddeb72b506e8e50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0.win32-py3.3.exe
Algorithm Hash digest
SHA256 667fa795ca5ccde216b769fc8572398598f1e0e2619f78605df1a4c75a475174
MD5 3e5a139b7bb77e37f3f87f1e2c7f518a
BLAKE2b-256 3789a949b02d66d600c45230a3a622f0d5f491182dbbc96fff9ffbcd869431bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0.win32-py2.7.exe
Algorithm Hash digest
SHA256 1bde1cea6b7f9bd66202feee289c282b076c00419dc6404db357b05125f4d692
MD5 d97c4c18e0b0582cdafeea70657dd377
BLAKE2b-256 562fc97adcba8f119a23d3580a3a95939c1a37d37d514b304d90912585a85521

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0.win32-py2.6.exe
Algorithm Hash digest
SHA256 271f1b6fcb4861d1b0fc7f612b2abaacb36c0f878fcc2908f1cf673337c3472c
MD5 016294b622cab7a083efc998746ca679
BLAKE2b-256 3fc2f7ec0a70bc58c1918f814001682cca30f4b168f5b46dce913220e625dee6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 dcb4f208ec28fb72b35d1edf49aa51f2cc116b439aa40c4c415cbfe1fee54078
MD5 4f7755c7b2ffafcb87917081fd114115
BLAKE2b-256 0bf662592864eb064763989aa5830706034f9ad3c6ae2255fb7cae0c66b336a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0-cp34-none-win32.whl
Algorithm Hash digest
SHA256 8f5a0e859ae6dcc349914fb9ea0acc21cfd82a321d1c1b02d3d92c195f523ccd
MD5 6b30efb1610fb1b09b43a7337937a321
BLAKE2b-256 093409d53d29318a5fea88bd30d629595805064a0e3776e706eca2d79ceaebac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0-cp33-none-win_amd64.whl
Algorithm Hash digest
SHA256 92a7f420bc97f899b5abab30392c23ba652304aec18415f2d1167da04dae9913
MD5 30b71587a7a47a6d944032cceed9ddae
BLAKE2b-256 c75a4046949e207b72b93540f3e19d699813fd35e290ccdf48080f332226b912

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0-cp33-none-win32.whl
Algorithm Hash digest
SHA256 0a313ebe14b9e277dfd151f4ad021012fb344dd51248e6de2aa1e7062d678541
MD5 87fc1a961edf670ec69a6a970143257e
BLAKE2b-256 f47c56b718693e4c41b32af8bbe39160e8a3ea0ca12d3eece3dbbb8d4c046855

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 ada1cf324e6aba0affcb23c6fd959dae9f72de6ec135530788cbf17153d4fd3c
MD5 c411e0f689554995311bc7fcb9d5348e
BLAKE2b-256 0b7c90869233a3e4056ddfdd1040d0e7722d3bb023c74b48bf10c09380c26eae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0-cp27-none-win32.whl
Algorithm Hash digest
SHA256 71af7a30eb6ed694a3624330334bd12da28bffdbe813f4b1080fadeb86f5970f
MD5 5157949472b169c48684163ee51ee498
BLAKE2b-256 db8734b52811b755db94a7dd123e5c0f1d257885535f08f5f185c17810214d55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.1.0-cp26-none-win32.whl
Algorithm Hash digest
SHA256 399916a016503c9ae99fd6aafbba4628b86ebdee52d67034e8c3f26e88a3504b
MD5 b44de956915b0b250418188e0d12dc24
BLAKE2b-256 4e0aab710541d02ff3ce4169a0922e4412952332991c4c39a0ea9df20e9279b0

See more details on using hashes here.

Supported by

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