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.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)
>>>

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.1.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.1.1
File Size Uploaded
psutil-2.1.1.tar.gz 216.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for psutil 2.1.1
File
psutil-2.1.1.win-amd64-py3.4.exe Details
psutil-2.1.1.win-amd64-py3.3.exe Details
psutil-2.1.1.win-amd64-py2.7.exe Details
psutil-2.1.1.win32-py3.4.exe Details
psutil-2.1.1.win32-py3.3.exe Details
psutil-2.1.1.win32-py2.7.exe Details
psutil-2.1.1.win32-py2.6.exe Details
psutil-2.1.1.win32-py2.5.exe Details
psutil-2.1.1.win32-py2.4.exe Details

Total release size: 2.6 MB

Release files / psutil-2.1.1.tar.gz

Download URL psutil-2.1.1.tar.gz
Size 216.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bf812a4aa6a41147d0e96e63d826eb7582fda6b54ad8f22534354b7f8ac45593
BLAKE2b-256 checksum
How to use checksums
644b70601d39b8e445265ed148affc49f7bfbd246940637785be5c80e007fa6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.1.1.win-amd64-py3.4.exe
Size 312.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3afa327284a218d6a25b2f3520135337cfa4a47eaea030273ad8eb02894d60fe
BLAKE2b-256 checksum
How to use checksums
c7672aae3f66090c2e06fa60c29a2e554fd2a718949aca53bca78d640212cb34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.1.1.win-amd64-py3.3.exe
Size 311.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9e28fe35e1185d59ba55313d90efc122d45b7a2e3fa304869024d26b0a809bc5
BLAKE2b-256 checksum
How to use checksums
a3a9b3f114141a49244739321f221f35c300ac7f34ec9e3a352ea70c9fae41f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.1.1.win-amd64-py2.7.exe
Size 312.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1b5ee64306535a625b77648e32f1b064c31bf58bfc7a37cde6c7bb3fa4abb6bd
BLAKE2b-256 checksum
How to use checksums
e650df05e0cbfcf20f022756d5e2da32b4f4f37d5bca6f5bd6965b4ef0460e8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.1.1.win32-py3.4.exe
Size 279.1 kB
Tags Source
SHA-256 checksum
How to use checksums
bc353df13a6ea40651cba82810a38590e2439c158cf6f130cd0876d0dda53118
BLAKE2b-256 checksum
How to use checksums
5f260be35c7f3dc9e78d405ed6be3aa76a9ce97b51e0076db98408a6f2c288fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.1.1.win32-py3.3.exe
Size 277.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8f0f88752e1e9bfeced78daf29d90e0028d17f39b805bb0acf70fefe77ba5ccb
BLAKE2b-256 checksum
How to use checksums
f1632fcaa58b101dce55a12f768508a7f0a0028ccc5a90633d86dd4cc0bcdb52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.1.1.win32-py2.7.exe
Size 282.9 kB
Tags Source
SHA-256 checksum
How to use checksums
37ce747f9042c375f62e861d627b5eb7bace24767303f5d0c4c03d17173a551c
BLAKE2b-256 checksum
How to use checksums
784714db8651f9863d301c0673d25fa22b87d13fde2974f94854502886a21fd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.1.1.win32-py2.6.exe
Size 283.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a53546550067773920e1f7e6e3f1fad2f2befe45c6ff6c94e22b67f4b54c321a
BLAKE2b-256 checksum
How to use checksums
9f45d2dfa6bdd9b64bfd46ad35af774c3819e0d5abf23a99d51adf11984ca658
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.1.1.win32-py2.5.exe

Download URL psutil-2.1.1.win32-py2.5.exe
Size 150.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6aeb358b66cc4367378edadb928c77e82646f36858b2a516298d1917aa6aca25
BLAKE2b-256 checksum
How to use checksums
5de969dee6454940bb102fbbcaa1e44b46bfefc4c0bf53e5e3835d3de3ebc9ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / psutil-2.1.1.win32-py2.4.exe

Download URL psutil-2.1.1.win32-py2.4.exe
Size 145.8 kB
Tags Source
SHA-256 checksum
How to use checksums
7c76d99bfaeafbcf66096c69b8fca1f7269603d66cad1b14cd8dd93b14bceeb0
BLAKE2b-256 checksum
How to use checksums
274ec9b4802420d6b5d0a844208c9b8a4e25b3c37305428e40bc1da6f5076891
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

2.1.3

17 release files

2.1.2

17 release files

This release

2.1.1 This release

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