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

Download this month Latest version License Travis

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.4 (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=8374149120L, available=2081050624L, percent=75.1, used=8074080256L, free=300068864L, active=3294920704, inactive=1361616896, buffers=529895424L, cached=1251086336)
>>> psutil.swap_memory()
sswap(total=2097147904L, used=296128512L, free=1801019392L, 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=2, type=1, laddr=('10.0.0.1', 48776), raddr=('93.186.135.91', 80), status='ESTABLISHED', pid=1254),
 pconn(fd=117, family=2, type=1, laddr=('10.0.0.1', 43761), raddr=('72.14.234.100', 80), status='CLOSING', pid=2987),
 pconn(fd=-1, family=2, type=1, laddr=('10.0.0.1', 60759), raddr=('72.14.234.104', 80), status='ESTABLISHED', pid=None),
 pconn(fd=-1, family=2, type=1, laddr=('10.0.0.1', 51314), raddr=('72.14.234.83', 443), status='SYN_SENT', pid=None)
 ...]

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=2, type=1, laddr=('10.0.0.1', 48776), raddr=('93.186.135.91', 80), status='ESTABLISHED'),
 pconn(fd=117, family=2, type=1, laddr=('10.0.0.1', 43761), raddr=('72.14.234.100', 80), status='CLOSING'),
 pconn(fd=119, family=2, type=1, laddr=('10.0.0.1', 60759), raddr=('72.14.234.104', 80), status='ESTABLISHED'),
 pconn(fd=123, family=2, type=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=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

This version

2.2.1

Download files

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

Source Distribution

psutil-2.2.1.tar.gz (223.7 kB view details)

Uploaded Source

Built Distributions

psutil-2.2.1.win-amd64-py3.4.exe (316.4 kB view details)

Uploaded Source

psutil-2.2.1.win-amd64-py3.3.exe (316.4 kB view details)

Uploaded Source

psutil-2.2.1.win-amd64-py2.7.exe (318.0 kB view details)

Uploaded Source

psutil-2.2.1.win32-py3.4.exe (283.1 kB view details)

Uploaded Source

psutil-2.2.1.win32-py3.3.exe (283.1 kB view details)

Uploaded Source

psutil-2.2.1.win32-py2.7.exe (288.2 kB view details)

Uploaded Source

psutil-2.2.1.win32-py2.6.exe (288.4 kB view details)

Uploaded Source

psutil-2.2.1-cp34-none-win_amd64.whl (84.0 kB view details)

Uploaded CPython 3.4Windows x86-64

psutil-2.2.1-cp34-none-win32.whl (81.9 kB view details)

Uploaded CPython 3.4Windows x86

psutil-2.2.1-cp33-none-win_amd64.whl (84.0 kB view details)

Uploaded CPython 3.3Windows x86-64

psutil-2.2.1-cp33-none-win32.whl (81.9 kB view details)

Uploaded CPython 3.3Windows x86

psutil-2.2.1-cp27-none-win_amd64.whl (84.1 kB view details)

Uploaded CPython 2.7Windows x86-64

psutil-2.2.1-cp27-none-win32.whl (81.9 kB view details)

Uploaded CPython 2.7Windows x86

psutil-2.2.1-cp26-none-win32.whl (82.1 kB view details)

Uploaded CPython 2.6Windows x86

File details

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

File metadata

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

File hashes

Hashes for psutil-2.2.1.tar.gz
Algorithm Hash digest
SHA256 a0e9b96f1946975064724e242ac159f3260db24ffa591c3da0a355361a3a337f
MD5 1a2b58cd9e3a53528bb6148f0c4d5244
BLAKE2b-256 df47ee54ef14dd40f8ce831a7581001a5096494dc99fe71586260ca6b531fe86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 298ed760a365a846337750c5089adcec2a87014c61132ae39db671982750f35a
MD5 1ef08c2602bef31b6b7028b026393ced
BLAKE2b-256 d9590f14daf5797c61db2fec25bca49b49aa0a5d57dec57b4e58ae4652dadb95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 d25746746f2680d6174c9eb0e2793cb73304ca200d5ec7334000fdb575cd6577
MD5 80abc81e1f9172f5c9bec223a5c731bb
BLAKE2b-256 c2dd5fdd5fd6102ae546452a5f32a6f75ec44c11d6b84c188dd33cfe1e2809e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 552eaba2dbc9a49af2da64fc00cedf8847c7c9c2559cc620d9c8855583105764
MD5 41f4884c08715b9d1f20189234792056
BLAKE2b-256 9727e64014166df9efc3d00f987a251938d534d3897d62ef21486559a697a770

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1.win32-py3.4.exe
Algorithm Hash digest
SHA256 1e1df017bfa14c0edc87a124b11ca6e7fd8b6b5c9692eb06c1b72077bcca3845
MD5 8eadba440e4a771df94c1c4ed020d15f
BLAKE2b-256 8cc124179e79ab74bde86ee766c4c0d2bb90b98e4e4d14017efeec024caba268

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1.win32-py3.3.exe
Algorithm Hash digest
SHA256 f8d94c8228011d1b658c39783596d95244e01950413bfc41fd44e78129ef7075
MD5 4443b77f6cea12e5f4c26397a50745d0
BLAKE2b-256 4ad6341767cdc6890adfb19ad60683e66dab3cdde605bc226427c8ec17dbd3f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1.win32-py2.7.exe
Algorithm Hash digest
SHA256 9227949290983df92bb3bb57c5b25605ebbc0e61a3f9baa394f752ed7abc914c
MD5 622d41609aa7e17c3812fa9602b94738
BLAKE2b-256 46f3d50f059d7d297db7335e340333124eac9441c5897bb29223c85ebaa64e7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1.win32-py2.6.exe
Algorithm Hash digest
SHA256 6e49f72a1cd57918b275fdf7dd041618696fc39d5705ac722fdfccaf0b784a93
MD5 3b54cea05afaf1233b55e2915a1ffd76
BLAKE2b-256 0ca263967c61fbfc3f60c1b17e652a52d1afeb3c56403990c5a8f2fb801e2aa1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 f49d3ca9150f20269eae79d6efac98f0bbe4e5ceac46fe418d881560a04b6d8e
MD5 0b15c74654290fe456032d1fc5918da1
BLAKE2b-256 64f7c385e9350abbbb082364596fd4b0066fcb0c51ebc103a7ebf6eb9bc837e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1-cp34-none-win32.whl
Algorithm Hash digest
SHA256 a98b350251df2658c9be6bf0b6ebbab10fe88ccb513079c2c56fb53330530ee6
MD5 85476e6f242935d03af99004904bfec0
BLAKE2b-256 7f3a4bb24092c3de0a44f2fc1afb7bcaf898f1daba67cba5b9188b0ae6527102

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1-cp33-none-win_amd64.whl
Algorithm Hash digest
SHA256 07f31cbe5fc1183c8efb52bab9a5382ebd001a6e11b5a5df827f69456219d514
MD5 578127132e703f137b75c8fd85a8956f
BLAKE2b-256 fe8dffc94f092a12fc3cb837b9bda93abd88fb12219bcc6684b9bffea5e1f385

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1-cp33-none-win32.whl
Algorithm Hash digest
SHA256 f5e0d247b09c9460b896ff89098015b7687a2934d4ed6165a5c3a662fad7ab6b
MD5 718afd5e0bc6fbb0c7fcb6b751757815
BLAKE2b-256 a2fe40b7d42057c5e68ff4c733b5689e9ae9d8785f13576326ba44371689eff7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 81a6ab277886f233f230c46073fa6fc97ca2a95a44a14b80c6f6054acb7a644b
MD5 ab97247ebf12b001eae9c7eec56bc75b
BLAKE2b-256 1cff6b00405e4eeb3c40d4fc07142ef7bdc3a7a7aa2a1640b65e654bdb7682d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1-cp27-none-win32.whl
Algorithm Hash digest
SHA256 84ec9e77cab1d9ecf2d93bf43eba255a11b26d480966ee542bc846be1e272ea5
MD5 dc7193873919b2bbf39c3bca6f0c6c40
BLAKE2b-256 40b6a94c6d00ac18f779c72973639b78519de0c488e8e8e8d00b65cf4287bec3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.2.1-cp26-none-win32.whl
Algorithm Hash digest
SHA256 610f08fc0df646e4997b52f2bf2e40118a560738422d540883297c6f4e38be8c
MD5 5b1a30d48d6c490cc467c1d17a7ff2f0
BLAKE2b-256 0aa7b6323d30a8dde3f6a139809898e4bdcabcae3129314621aa24eb5ca4468e

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