Skip to main content
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)
>>>

Donate

A lot of time and effort went into making psutil as it is right now. If you feel psutil is useful to you or your business and want to support its future development please consider donating me (Giampaolo Rodola’) some money. I only ask for a small donation, but of course I appreciate any amount.

Donate via PayPal

Don’t want to donate money? Then maybe you could write me a recommendation on Linkedin.

Mailing list

http://groups.google.com/group/psutil/

Timeline

Release files for psutil 2.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for psutil 2.2.1
File Size Uploaded
psutil-2.2.1.tar.gz 223.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for psutil 2.2.1
File
psutil-2.2.1.win-amd64-py3.4.exe Details
psutil-2.2.1.win-amd64-py3.3.exe Details
psutil-2.2.1.win-amd64-py2.7.exe Details
psutil-2.2.1.win32-py3.4.exe Details
psutil-2.2.1.win32-py3.3.exe Details
psutil-2.2.1.win32-py2.7.exe Details
psutil-2.2.1.win32-py2.6.exe Details
psutil-2.2.1-cp34-none-win_amd64.whl CPython 3.4 none Windows x86-64 Details
psutil-2.2.1-cp34-none-win32.whl CPython 3.4 none Windows x86-32 Details
psutil-2.2.1-cp33-none-win_amd64.whl CPython 3.3 none Windows x86-64 Details
psutil-2.2.1-cp33-none-win32.whl CPython 3.3 none Windows x86-32 Details
psutil-2.2.1-cp27-none-win_amd64.whl CPython 2.7 none Windows x86-64 Details
psutil-2.2.1-cp27-none-win32.whl CPython 2.7 none Windows x86-32 Details
psutil-2.2.1-cp26-none-win32.whl CPython 2.6 none Windows x86-32 Details

Total release size: 2.9 MB

Release files / psutil-2.2.1.tar.gz

Download URL psutil-2.2.1.tar.gz
Size 223.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a0e9b96f1946975064724e242ac159f3260db24ffa591c3da0a355361a3a337f
BLAKE2b-256 checksum
How to use checksums
df47ee54ef14dd40f8ce831a7581001a5096494dc99fe71586260ca6b531fe86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1.win-amd64-py3.4.exe

Download URL psutil-2.2.1.win-amd64-py3.4.exe
Size 316.4 kB
Tags Source
SHA-256 checksum
How to use checksums
298ed760a365a846337750c5089adcec2a87014c61132ae39db671982750f35a
BLAKE2b-256 checksum
How to use checksums
d9590f14daf5797c61db2fec25bca49b49aa0a5d57dec57b4e58ae4652dadb95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1.win-amd64-py3.3.exe

Download URL psutil-2.2.1.win-amd64-py3.3.exe
Size 316.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d25746746f2680d6174c9eb0e2793cb73304ca200d5ec7334000fdb575cd6577
BLAKE2b-256 checksum
How to use checksums
c2dd5fdd5fd6102ae546452a5f32a6f75ec44c11d6b84c188dd33cfe1e2809e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1.win-amd64-py2.7.exe

Download URL psutil-2.2.1.win-amd64-py2.7.exe
Size 318.0 kB
Tags Source
SHA-256 checksum
How to use checksums
552eaba2dbc9a49af2da64fc00cedf8847c7c9c2559cc620d9c8855583105764
BLAKE2b-256 checksum
How to use checksums
9727e64014166df9efc3d00f987a251938d534d3897d62ef21486559a697a770
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1.win32-py3.4.exe

Download URL psutil-2.2.1.win32-py3.4.exe
Size 283.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1e1df017bfa14c0edc87a124b11ca6e7fd8b6b5c9692eb06c1b72077bcca3845
BLAKE2b-256 checksum
How to use checksums
8cc124179e79ab74bde86ee766c4c0d2bb90b98e4e4d14017efeec024caba268
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1.win32-py3.3.exe

Download URL psutil-2.2.1.win32-py3.3.exe
Size 283.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f8d94c8228011d1b658c39783596d95244e01950413bfc41fd44e78129ef7075
BLAKE2b-256 checksum
How to use checksums
4ad6341767cdc6890adfb19ad60683e66dab3cdde605bc226427c8ec17dbd3f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1.win32-py2.7.exe

Download URL psutil-2.2.1.win32-py2.7.exe
Size 288.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9227949290983df92bb3bb57c5b25605ebbc0e61a3f9baa394f752ed7abc914c
BLAKE2b-256 checksum
How to use checksums
46f3d50f059d7d297db7335e340333124eac9441c5897bb29223c85ebaa64e7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1.win32-py2.6.exe

Download URL psutil-2.2.1.win32-py2.6.exe
Size 288.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6e49f72a1cd57918b275fdf7dd041618696fc39d5705ac722fdfccaf0b784a93
BLAKE2b-256 checksum
How to use checksums
0ca263967c61fbfc3f60c1b17e652a52d1afeb3c56403990c5a8f2fb801e2aa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1-cp34-none-win_amd64.whl

Download URL psutil-2.2.1-cp34-none-win_amd64.whl
Size 84.0 kB
Tags CPython 3.4 Windows x86-64
SHA-256 checksum
How to use checksums
f49d3ca9150f20269eae79d6efac98f0bbe4e5ceac46fe418d881560a04b6d8e
BLAKE2b-256 checksum
How to use checksums
64f7c385e9350abbbb082364596fd4b0066fcb0c51ebc103a7ebf6eb9bc837e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1-cp34-none-win32.whl

Download URL psutil-2.2.1-cp34-none-win32.whl
Size 81.9 kB
Tags CPython 3.4 Windows x86-32
SHA-256 checksum
How to use checksums
a98b350251df2658c9be6bf0b6ebbab10fe88ccb513079c2c56fb53330530ee6
BLAKE2b-256 checksum
How to use checksums
7f3a4bb24092c3de0a44f2fc1afb7bcaf898f1daba67cba5b9188b0ae6527102
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1-cp33-none-win_amd64.whl

Download URL psutil-2.2.1-cp33-none-win_amd64.whl
Size 84.0 kB
Tags CPython 3.3 Windows x86-64
SHA-256 checksum
How to use checksums
07f31cbe5fc1183c8efb52bab9a5382ebd001a6e11b5a5df827f69456219d514
BLAKE2b-256 checksum
How to use checksums
fe8dffc94f092a12fc3cb837b9bda93abd88fb12219bcc6684b9bffea5e1f385
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1-cp33-none-win32.whl

Download URL psutil-2.2.1-cp33-none-win32.whl
Size 81.9 kB
Tags CPython 3.3 Windows x86-32
SHA-256 checksum
How to use checksums
f5e0d247b09c9460b896ff89098015b7687a2934d4ed6165a5c3a662fad7ab6b
BLAKE2b-256 checksum
How to use checksums
a2fe40b7d42057c5e68ff4c733b5689e9ae9d8785f13576326ba44371689eff7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1-cp27-none-win_amd64.whl

Download URL psutil-2.2.1-cp27-none-win_amd64.whl
Size 84.1 kB
Tags CPython 2.7 Windows x86-64
SHA-256 checksum
How to use checksums
81a6ab277886f233f230c46073fa6fc97ca2a95a44a14b80c6f6054acb7a644b
BLAKE2b-256 checksum
How to use checksums
1cff6b00405e4eeb3c40d4fc07142ef7bdc3a7a7aa2a1640b65e654bdb7682d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1-cp27-none-win32.whl

Download URL psutil-2.2.1-cp27-none-win32.whl
Size 81.9 kB
Tags CPython 2.7 Windows x86-32
SHA-256 checksum
How to use checksums
84ec9e77cab1d9ecf2d93bf43eba255a11b26d480966ee542bc846be1e272ea5
BLAKE2b-256 checksum
How to use checksums
40b6a94c6d00ac18f779c72973639b78519de0c488e8e8e8d00b65cf4287bec3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.2.1-cp26-none-win32.whl

Download URL psutil-2.2.1-cp26-none-win32.whl
Size 82.1 kB
Tags CPython 2.6 Windows x86-32
SHA-256 checksum
How to use checksums
610f08fc0df646e4997b52f2bf2e40118a560738422d540883297c6f4e38be8c
BLAKE2b-256 checksum
How to use checksums
0aa7b6323d30a8dde3f6a139809898e4bdcabcae3129314621aa24eb5ca4468e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

7.2.2

21 release files

7.2.1

21 release files

7.2.0

21 release files

7.1.2

19 release files

7.1.1

9 release files

7.1.0

9 release files

7.0.0

10 release files

6.1.1

17 release files

6.1.0

17 release files

6.0.0

17 release files

5.9.8

16 release files

5.9.7

16 release files

5.9.6

16 release files

5.9.5

14 release files

5.9.3

36 release files

5.9.1

32 release files

5.9.0

32 release files

5.8.0

28 release files

5.7.3

11 release files

5.7.2

11 release files

5.7.1

15 release files

5.7.0

11 release files

5.6.7

11 release files

5.6.6

11 release files

5.6.3

10 release files

5.6.2

9 release files

5.6.1

9 release files

5.6.0

9 release files

5.5.1

9 release files

5.5.0

9 release files

5.4.8

9 release files

5.4.7

9 release files

5.4.5

9 release files

5.4.4

9 release files

5.4.3

9 release files

5.4.2

9 release files

5.4.1

9 release files

5.4.0

11 release files

5.3.1

11 release files

5.2.2

21 release files

5.2.1

21 release files

5.0.1

21 release files

4.4.2

17 release files

4.4.1

17 release files

4.4.0

17 release files

4.3.0

17 release files

4.2.0

17 release files

4.1.0

21 release files

4.0.0

27 release files

3.4.2

21 release files

3.4.1

21 release files

3.4.0

3.3.0

21 release files

3.1.1

15 release files

3.1.0

15 release files

3.0.1

14 release files

3.0.0

14 release files

This release

2.2.1 This release

15 release files

2.1.3

17 release files

2.1.2

17 release files

2.1.1

10 release files

2.0.0

10 release files

1.2.1

9 release files

1.2.0

8 release files

1.1.3

8 release files

1.1.2

9 release files

1.1.1

9 release files

1.1.0

8 release files

1.0.1

9 release files

1.0.0

9 release files

0.7.1

9 release files

0.7.0

9 release files

0.6.1

9 release files

0.6.0

9 release files

0.5.1

9 release files

0.5.0

9 release files

0.4.1

9 release files

0.4.0

9 release files

0.3.0

9 release files

0.2.1

9 release files

0.2.0

9 release files

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page