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

Uploaded Source

Built Distributions

psutil-2.1.1.win-amd64-py3.4.exe (312.4 kB view details)

Uploaded Source

psutil-2.1.1.win-amd64-py3.3.exe (311.3 kB view details)

Uploaded Source

psutil-2.1.1.win-amd64-py2.7.exe (312.8 kB view details)

Uploaded Source

psutil-2.1.1.win32-py3.4.exe (279.1 kB view details)

Uploaded Source

psutil-2.1.1.win32-py3.3.exe (277.9 kB view details)

Uploaded Source

psutil-2.1.1.win32-py2.7.exe (282.9 kB view details)

Uploaded Source

psutil-2.1.1.win32-py2.6.exe (283.1 kB view details)

Uploaded Source

psutil-2.1.1.win32-py2.5.exe (150.0 kB view details)

Uploaded Source

psutil-2.1.1.win32-py2.4.exe (145.8 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for psutil-2.1.1.tar.gz
Algorithm Hash digest
SHA256 bf812a4aa6a41147d0e96e63d826eb7582fda6b54ad8f22534354b7f8ac45593
MD5 72a6b15d589fab11f6ca245b775bc3c6
BLAKE2b-256 644b70601d39b8e445265ed148affc49f7bfbd246940637785be5c80e007fa6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 3afa327284a218d6a25b2f3520135337cfa4a47eaea030273ad8eb02894d60fe
MD5 2b4dd5f4eda947eadba2c8dda036c116
BLAKE2b-256 c7672aae3f66090c2e06fa60c29a2e554fd2a718949aca53bca78d640212cb34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 9e28fe35e1185d59ba55313d90efc122d45b7a2e3fa304869024d26b0a809bc5
MD5 cc5e2d00300c31f90be903a28edd8c00
BLAKE2b-256 a3a9b3f114141a49244739321f221f35c300ac7f34ec9e3a352ea70c9fae41f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 1b5ee64306535a625b77648e32f1b064c31bf58bfc7a37cde6c7bb3fa4abb6bd
MD5 45301b26a0d3749a6e9997db225f7750
BLAKE2b-256 e650df05e0cbfcf20f022756d5e2da32b4f4f37d5bca6f5bd6965b4ef0460e8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win32-py3.4.exe
Algorithm Hash digest
SHA256 bc353df13a6ea40651cba82810a38590e2439c158cf6f130cd0876d0dda53118
MD5 e9fe00a8fa665b5faaefbef280a2b2b1
BLAKE2b-256 5f260be35c7f3dc9e78d405ed6be3aa76a9ce97b51e0076db98408a6f2c288fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win32-py3.3.exe
Algorithm Hash digest
SHA256 8f0f88752e1e9bfeced78daf29d90e0028d17f39b805bb0acf70fefe77ba5ccb
MD5 bac08428386f60231dcba92cdd9860f2
BLAKE2b-256 f1632fcaa58b101dce55a12f768508a7f0a0028ccc5a90633d86dd4cc0bcdb52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win32-py2.7.exe
Algorithm Hash digest
SHA256 37ce747f9042c375f62e861d627b5eb7bace24767303f5d0c4c03d17173a551c
MD5 5d51ac4843a4cc8407d0be0e2d3d0eac
BLAKE2b-256 784714db8651f9863d301c0673d25fa22b87d13fde2974f94854502886a21fd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win32-py2.6.exe
Algorithm Hash digest
SHA256 a53546550067773920e1f7e6e3f1fad2f2befe45c6ff6c94e22b67f4b54c321a
MD5 4be430905dd5b146ff5d9d255dcb7eab
BLAKE2b-256 9f45d2dfa6bdd9b64bfd46ad35af774c3819e0d5abf23a99d51adf11984ca658

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win32-py2.5.exe
Algorithm Hash digest
SHA256 6aeb358b66cc4367378edadb928c77e82646f36858b2a516298d1917aa6aca25
MD5 8550a607cf6cd29608f75223790a4e7a
BLAKE2b-256 5de969dee6454940bb102fbbcaa1e44b46bfefc4c0bf53e5e3835d3de3ebc9ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.1.win32-py2.4.exe
Algorithm Hash digest
SHA256 7c76d99bfaeafbcf66096c69b8fca1f7269603d66cad1b14cd8dd93b14bceeb0
MD5 cdcebad362d6ef3d629ad65c8a0542b5
BLAKE2b-256 274ec9b4802420d6b5d0a844208c9b8a4e25b3c37305428e40bc1da6f5076891

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