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.4 to 3.4. Pypi 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.ext_memory_info()
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

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

Uploaded Source

Built Distributions

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

psutil-2.1.2.win-amd64-py3.4.exe (317.8 kB view details)

Uploaded Source

psutil-2.1.2.win-amd64-py3.3.exe (317.8 kB view details)

Uploaded Source

psutil-2.1.2.win-amd64-py2.7.exe (319.3 kB view details)

Uploaded Source

psutil-2.1.2.win32-py3.4.exe (284.5 kB view details)

Uploaded Source

psutil-2.1.2.win32-py3.3.exe (284.5 kB view details)

Uploaded Source

psutil-2.1.2.win32-py2.7.exe (289.5 kB view details)

Uploaded Source

psutil-2.1.2.win32-py2.6.exe (289.7 kB view details)

Uploaded Source

psutil-2.1.2.win32-py2.5.exe (155.4 kB view details)

Uploaded Source

psutil-2.1.2.win32-py2.4.exe (155.4 kB view details)

Uploaded Source

psutil-2.1.2-cp34-none-win_amd64.whl (85.8 kB view details)

Uploaded CPython 3.4Windows x86-64

psutil-2.1.2-cp34-none-win32.whl (83.7 kB view details)

Uploaded CPython 3.4Windows x86

psutil-2.1.2-cp33-none-win_amd64.whl (85.8 kB view details)

Uploaded CPython 3.3Windows x86-64

psutil-2.1.2-cp33-none-win32.whl (83.7 kB view details)

Uploaded CPython 3.3Windows x86

psutil-2.1.2-cp27-none-win_amd64.whl (85.8 kB view details)

Uploaded CPython 2.7Windows x86-64

psutil-2.1.2-cp27-none-win32.whl (83.7 kB view details)

Uploaded CPython 2.7Windows x86

psutil-2.1.2-cp26-none-win32.whl (83.9 kB view details)

Uploaded CPython 2.6Windows x86

File details

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

File metadata

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

File hashes

Hashes for psutil-2.1.2.tar.gz
Algorithm Hash digest
SHA256 897e5163e0669001bf8bcb0557362f14703356336519082a93c38d54e5b392e4
MD5 1969c9b3e256f5ce8fb90c5d0124233e
BLAKE2b-256 536a8051b913b2f94eb00fd045fe9e14a7182b6e7f088b12c308edd7616a559b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 f7f2a61be7a828656dceffdf0d2fa304a144db6ab5ec4e2b033108f3822df6ff
MD5 966691e2d81155fa42d5aea8c4c3a4af
BLAKE2b-256 57e5c041b08bea32246f53b7cf27b897e882a695f3ea95eb632b384dd35cf41f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 e20f317187a7186e13dc6fdd6960083c227db86fffbb145fe000e8c167a854a6
MD5 cb11bfdd1ab3d39076850218c4476ff7
BLAKE2b-256 d2b4887323eb2b0b5becb5a7b77ab04167741346fddffe27bc6ae5deeffcc3c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 3ed7ef4ab59894e6eb94adae0b656733c91906af169b55443329315322cd63b3
MD5 b25dece2dfb0e90938580dfdb2778eff
BLAKE2b-256 a688cc912d38640ddf3441db1f85f8ff8a87f906056554239a4a211970cf6446

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2.win32-py3.4.exe
Algorithm Hash digest
SHA256 e2326c7b9f64a0f22891d3b362efcd92389e641023b07bc54567280c0c2e160d
MD5 6b8019a4c0fe669411b0f4c109c35b7d
BLAKE2b-256 88bd843fadc578d62f2888d5a7b4e2a418a28140ac239a5a5039c0d3678df647

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2.win32-py3.3.exe
Algorithm Hash digest
SHA256 73428e7b695e5889f07f1b37c5ec0cc0f49d3808dc40986050f1b13fd7c4c71e
MD5 7f82bd1d027fa5a2940e9881457a31d2
BLAKE2b-256 b097ba13c3915aba7776bb0d23819c04255230c46df1f8582752f7e0382c0b67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2.win32-py2.7.exe
Algorithm Hash digest
SHA256 dbd9e4fbe08c0ff6d4a87a4d6dfae16fccd03346f980cffa105941de8801d00b
MD5 db6ca0cd130f61d681f8321c00c9e7fa
BLAKE2b-256 fb0173753147113f6db19734db6e7ac994cee5cce0f0935e12320d7aa1b56a14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2.win32-py2.6.exe
Algorithm Hash digest
SHA256 f35d91b5fc2b52472c0766fa411ac22f7a5ed8b1ececd96c1486380bdad0bb41
MD5 bab38e6ac0ae268648869df1304c5093
BLAKE2b-256 dd3ecdc3d4f343e6edc583d0686d1d20d98f9e11de35c51dc7990525ab2ca332

See more details on using hashes here.

File details

Details for the file psutil-2.1.2.win32-py2.5.exe.

File metadata

File hashes

Hashes for psutil-2.1.2.win32-py2.5.exe
Algorithm Hash digest
SHA256 982f4568876d10881f9c90fe992d1d9af353a59b5de7771cc4766d7432aee7ab
MD5 12e931cd3c8d65c3fa4fa1570aea60df
BLAKE2b-256 46862971b31e2637ddc53adce2d997472cee8d4dec366d5a1e140945b95860d5

See more details on using hashes here.

File details

Details for the file psutil-2.1.2.win32-py2.4.exe.

File metadata

File hashes

Hashes for psutil-2.1.2.win32-py2.4.exe
Algorithm Hash digest
SHA256 77aac0179fe0e8b39c9b25ea732285d307bb941e715075366dc467b8609ebf09
MD5 01a50a7d2a858b008393b95d673e4541
BLAKE2b-256 ce3f7c434baec7ca47e65fb1e3bcbc8fe1c9f504d93c750a7fa4f98b16635920

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 a78226f9236c674d43b206e7da06478cf2bcf10e5aee647f671878ea2434805f
MD5 eff913925c955ab66a19694397ba1320
BLAKE2b-256 b94168b5fc38b97e037ef55e6475d618c079fe2b5d148f5e3fda795c21d888a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2-cp34-none-win32.whl
Algorithm Hash digest
SHA256 97a1d0ddbb028a20feffaf7fa3d0c451004abc74ef7ea1e492d039f8b7278399
MD5 9210a9779a520a0bb82e8b720fc34c6b
BLAKE2b-256 ef4ac956675314e4a50b319d9894c2ee2d48ce83df4d639d9c2fc06a99415dec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2-cp33-none-win_amd64.whl
Algorithm Hash digest
SHA256 b4c69627c245025b9209acbffc066ff8ac1237d13e2eddd0461f3149969b7da3
MD5 e4ee3aa1cde7d58e4a9ee35e75d6e778
BLAKE2b-256 bc52ab3c88a0574275ec33d9de0fe7dc9b1a32c573de0e468502876bc1df6f84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2-cp33-none-win32.whl
Algorithm Hash digest
SHA256 c5e6424833620f0d0a70ebc1305260bfad4b5c73989b8a2e8bd01bf39b4b600c
MD5 8f38a8eb010406f068dd932c9a64f357
BLAKE2b-256 624dbe87c318274ade9d6589e8545dd5d5bb4bcc42e92334d88d948cf8daa36b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 79cb57bba4cbeebb7e445d19c531107493458a47d0f4c888ce49fc8dec670c32
MD5 f1ee658ce425161548fdbcf0ed905693
BLAKE2b-256 00ae567c30ff44c263cc78dfe50197184e58b62ca9fcfebad144cd235f5d8d2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2-cp27-none-win32.whl
Algorithm Hash digest
SHA256 41992126c0281c2f5f279a0e8583382a3b840bd0d48262dfb7bc3cb67bdc6587
MD5 545073fd189d1fab9f36d6a573f9d420
BLAKE2b-256 799d154b179a73695ae605856c2d77ab5da2a66ef4819c3c4f97e4ab297a2902

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.2-cp26-none-win32.whl
Algorithm Hash digest
SHA256 ccb5e28357a4b6c572b97e710a070f349e9b45172315eaed6e0b72e86d333b68
MD5 2564b087a410a913a83a12b6c6712f24
BLAKE2b-256 c722811ac7c641191e3b65c053c95eb34f6567bbc5155912630464271ab6f3df

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