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.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.0.1.tar.gz (241.5 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.0.1.win-amd64-py3.4.exe (321.9 kB view details)

Uploaded Source

psutil-3.0.1.win-amd64-py3.3.exe (321.9 kB view details)

Uploaded Source

psutil-3.0.1.win-amd64-py2.7.exe (323.5 kB view details)

Uploaded Source

psutil-3.0.1.win32-py3.4.exe (288.4 kB view details)

Uploaded Source

psutil-3.0.1.win32-py3.3.exe (288.5 kB view details)

Uploaded Source

psutil-3.0.1.win32-py2.7.exe (293.5 kB view details)

Uploaded Source

psutil-3.0.1.win32-py2.6.exe (293.7 kB view details)

Uploaded Source

psutil-3.0.1-cp34-none-win_amd64.whl (88.0 kB view details)

Uploaded CPython 3.4Windows x86-64

psutil-3.0.1-cp34-none-win32.whl (85.8 kB view details)

Uploaded CPython 3.4Windows x86

psutil-3.0.1-cp33-none-win_amd64.whl (88.0 kB view details)

Uploaded CPython 3.3Windows x86-64

psutil-3.0.1-cp33-none-win32.whl (85.8 kB view details)

Uploaded CPython 3.3Windows x86

psutil-3.0.1-cp27-none-win_amd64.whl (88.1 kB view details)

Uploaded CPython 2.7Windows x86-64

psutil-3.0.1-cp27-none-win32.whl (85.8 kB view details)

Uploaded CPython 2.7Windows x86

File details

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

File metadata

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

File hashes

Hashes for psutil-3.0.1.tar.gz
Algorithm Hash digest
SHA256 3f213b9ceed3c3068a973e04d7a8b2a29d1076abcb5ef45382517bfc6b808801
MD5 037dc67b7902d10f49f6fa5404a73a24
BLAKE2b-256 aa5dcbd3b7227fe7a4c2c77e4031b6c43961563a3ecde2981190e5afe959be51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 8f803bfe00a763254581bb6a3d788b3332492fbc67dbf46ad5068b663e44f309
MD5 00f55611295fce1bc92a03234e8fc1e6
BLAKE2b-256 d866d21041db114938ae22d4994ea31f2d8f1353aa61e5f0d0c6c4e185b016a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 99c593cb459b54209cdb4aed4a607fa8b2920fbd4f3c5a9219a0ede114975758
MD5 b42fe728720af7cbe3543e638a642c26
BLAKE2b-256 08b2278ac09b03db15b9e51c3ae7f678b3fbf050e895a2eccab66d05017bdef9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 b0a2ed567b31f71ae2e893768f0da0d51d51d12714471d4b7431e70ff5e36577
MD5 0e3bc3eb028c5be97ad79b6a98fd5666
BLAKE2b-256 9da4815181cacd33f0ce62a3c3aa188af65bd3945888aa2f6c16a925837ca517

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1.win32-py3.4.exe
Algorithm Hash digest
SHA256 73091a80ed295f990ab377dfd8cd4f7f00e3abfffb5e500192f1ea9fa58de158
MD5 dac5ba6c92682cdbb3c4afb7f276288c
BLAKE2b-256 08afc78ef8dc09ac61a479968b0c912677d0a0cb138c5ea7813b2a196fa32c53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1.win32-py3.3.exe
Algorithm Hash digest
SHA256 fc7cfe1d6919cb67f4144947acfcefc099d7d8299dd88bb4d863e62c44d041b4
MD5 0f67a99e3a4a0b76b98c90f93f9aa2e0
BLAKE2b-256 1f114871e823ff0d5a302a7f8ece60358d20ba7fc1620c4c9e2d94e826e1ff0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1.win32-py2.7.exe
Algorithm Hash digest
SHA256 363d3dbd610ce7bcf7f13b0a31133ee231d0990e99315142ed37f6ba2c1a84e6
MD5 38444c787142f33c4f7b0c5cd0a2dedf
BLAKE2b-256 5f64b994ed73ab49d5c847d97c47600b539603ebf0d6cfd8d3575b80db7aefb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1.win32-py2.6.exe
Algorithm Hash digest
SHA256 4a19475c1d6071c685b38f85837f6e6daa2c6ccd4d0132ab840123deb8ea2372
MD5 75ec39db17af6ed408581e51c3f0f24c
BLAKE2b-256 9967980b4a9257abaa3f53a60a3441f759301a0aca2922d60e18a05d23fb1b0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 1754d4118eaab16f299a37dafaf7d34111e9a8e5ac2a799e2bd9b1a5d9d1122b
MD5 c6fe8ac9c1ce343c8ed9acc43d4a54ca
BLAKE2b-256 1ee60af7e190f74d6f959dfb87f2b56f4711271729952691f843fb91c5e06712

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1-cp34-none-win32.whl
Algorithm Hash digest
SHA256 b7520db52c7c4e38cdd50bb11be02a826372d8002bf92bbe955823cac32c7f9d
MD5 331aa85ba81024384573e33fa9dc3ba0
BLAKE2b-256 ed851d4d97ce4c9a8c6dd479f5f717694016651170d3731cdecf740db0e4eae3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1-cp33-none-win_amd64.whl
Algorithm Hash digest
SHA256 ae4a7f51f40154d02ab1576e94377171a28cc83fc89c077c152f16ba3dae72f3
MD5 f80a0e810a404099d6a3cc691e5abfd5
BLAKE2b-256 7a591a9a10238226dbaed24b8d978e9cc743ac143504b3f4ad8f5e3a169e263a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1-cp33-none-win32.whl
Algorithm Hash digest
SHA256 23606e9b42760a8fdeada33281d0c3ce88df220949746e0ddf54d5db7974b4c6
MD5 9de9aff3cfc9a53ee9fb6853260ef2df
BLAKE2b-256 b29cb2c4373b9406eaf33654c4be828d9316ee780f4b3c19d0fa56f55eb64d61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 ba56ec5c052489b7a7015c26ed3f917f2df4ffa9799266e86be41815bc358b80
MD5 9d1e1763a68fbbf4c62996f0aed741d5
BLAKE2b-256 38bf0b743c8a07265f2ecb203f8e60310571dcae33036aa6ba7aa16e2641ac7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-3.0.1-cp27-none-win32.whl
Algorithm Hash digest
SHA256 bcb8d23121848953ed295f7e3c0875b0164ee98d3245060beb3623c59ff2a1bc
MD5 0764d6c09c72fa1a2f8399fe70cf6040
BLAKE2b-256 1705b2c807b470464fbe3d357734b68199451574fcd75431fd3e5c77be24b6e0

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