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

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 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.set_cpu_affinity([0])
>>>
>>> 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.set_nice(10)
>>>
>>> p.set_ionice(psutil.IOPRIO_CLASS_IDLE)  # IO priority (Win and Linux only)
>>> p.ionice()
pionice(ioclass=3, value=0)
>>>
>>> p.set_rlimit(psutil.RLIMIT_NOFILE, (5, 5))  # 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)
>>>

Release history Release notifications | RSS feed

This version

2.1.0

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

Uploaded Source

Built Distributions

psutil-2.1.0.win-amd64-py3.4.exe (311.7 kB view details)

Uploaded Source

psutil-2.1.0.win-amd64-py3.3.exe (310.6 kB view details)

Uploaded Source

psutil-2.1.0.win-amd64-py2.7.exe (312.1 kB view details)

Uploaded Source

psutil-2.1.0.win32-py3.4.exe (277.3 kB view details)

Uploaded Source

psutil-2.1.0.win32-py3.3.exe (277.3 kB view details)

Uploaded Source

psutil-2.1.0.win32-py2.7.exe (282.3 kB view details)

Uploaded Source

psutil-2.1.0.win32-py2.6.exe (282.5 kB view details)

Uploaded Source

psutil-2.1.0.win32-py2.5.exe (149.4 kB view details)

Uploaded Source

psutil-2.1.0.win32-py2.4.exe (145.3 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for psutil-2.1.0.tar.gz
Algorithm Hash digest
SHA256 d1e3ce46736d86164b6d72070f2cbaf86dcf9db03066b7f36a7b302e334a8d01
MD5 ba1f51f4c8e2c74cba48cef70b8a5bec
BLAKE2b-256 6cd169431c4fab9b5cecaf28f2f2e0abee21805c5783c47143db5f0f7d42dbec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 fa770a2c9e384924df021aed9aa5a6f92db8062a7f700113ba3943e262028454
MD5 905b52bf884192e89b27486df8d779aa
BLAKE2b-256 45563ac0a63799d54cb9b1914214944aed71e49297fb90de92b8d1fe20de3bd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 46232b7b0eb48c6ec1f12d17b2cc15ec3cc70ed952f2c98edb50aaa405dafa5d
MD5 d6304ffd3a11fd68502a7d2e1890dabe
BLAKE2b-256 cd607134a7f812ef1eba9373c86b95ce6254f5f58928baba04af161f0066629f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 9dc35f899946d58baf5b805ebed2f723f75d93f6b6bce212f79581d40f7276db
MD5 db0ee08adb7f00386ee419dcf414d451
BLAKE2b-256 7a3cce6a447030cdb50cf68a3988337df0c42e52abf45c3adfea3b225760eb70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win32-py3.4.exe
Algorithm Hash digest
SHA256 4719134be984b0f2ba072ff761f334c2f3dbb8ca6af70ba43d8ca31b7e13c3db
MD5 dbfc8d55b07aa6d6d242d0dc94279856
BLAKE2b-256 f53beab6a8d832d805c7a00d0f2398c12a32bea7e8b6eb7d5fbdf869e4bcc9e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win32-py3.3.exe
Algorithm Hash digest
SHA256 feccef3ccf09785c6f81e67223cf2d8736a90c8994623dd75f683dd2bf849235
MD5 fd8142e7395697feef6062f73dbaad4f
BLAKE2b-256 f00a32abfd9b965c9a433b5011574c904372b954330c170c6f92b637d661ecd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win32-py2.7.exe
Algorithm Hash digest
SHA256 f1ec06db1b0d27681a1bea4c9f0b33705bc5a00035c32f168da0ea193883bb91
MD5 cfe1b146fc38176e4e63290fa15029a1
BLAKE2b-256 d017ec99e9252dae834f4a012e13c804c86907fcb1cb474f7b1bc767562bfa7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win32-py2.6.exe
Algorithm Hash digest
SHA256 7eda949fbdf89548b0e52e7d666e096ea66b30b65bcbe04d305e036a24a76d11
MD5 60bc3108078da09323f3f8bf2e07ea30
BLAKE2b-256 f288a856c5ed36d15b8ad74597f380baa29891ec284e7a1be4cb2f91f8453bd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win32-py2.5.exe
Algorithm Hash digest
SHA256 381ac1027a270c04cf6decdc011a28a4270105d009f213d62daec4b3116b92b6
MD5 cecdc9f6eb194b11a99eaf447e1ad180
BLAKE2b-256 6d050e7213e6f0dc71490a523a70e6ab5e7cd5140d87dc93a4447da58c440d6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.1.0.win32-py2.4.exe
Algorithm Hash digest
SHA256 15d0d10bbd60e461690188cdd209d6688a1112648589bf291b17cc84e99cb6e7
MD5 291cef0d600812f123e77442a9677d81
BLAKE2b-256 09e8f6e4209b3d6373ea11fa340c2e6e4640a7ee53ef4697c49d610ffdf86674

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