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

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 3.0.0

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 3.0.0
File Size Uploaded
psutil-3.0.0.tar.gz 240.9 kB Details

Built distributions (wheels)

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

Total release size: 2.9 MB

Release files / psutil-3.0.0.tar.gz

Download URL psutil-3.0.0.tar.gz
Size 240.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a43cc84c6a2406e8f23785c68a52b792d95eb91e2b43be40f7c814bf80dc5979
BLAKE2b-256 checksum
How to use checksums
ba18c5bb52abb67194aabadfd61286b538ee8856c7cb9c0e92dd64c1b132bf5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0.win-amd64-py3.4.exe
Size 321.7 kB
Tags Source
SHA-256 checksum
How to use checksums
37a9869ef17680e768bf32d7556252a04f426e5b1e6fa51d5af16305c8a701b6
BLAKE2b-256 checksum
How to use checksums
d2679c988331d40c445ebc9d29d95534ce3908f3949f6a84d640a6c125bc56e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0.win-amd64-py3.3.exe
Size 321.7 kB
Tags Source
SHA-256 checksum
How to use checksums
32808b29473e788487ee28a65caaab1c9fbd44c2d654ce6d563a89f20e106996
BLAKE2b-256 checksum
How to use checksums
624f89c6ac53e424109639f42033d0e87c4de4ddb610060007c6d5f6081a0fba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0.win-amd64-py2.7.exe
Size 323.3 kB
Tags Source
SHA-256 checksum
How to use checksums
26b2cf4456e039f490f79457100564ff34718f4257b68dee53b42d17493f0187
BLAKE2b-256 checksum
How to use checksums
0cb1fa44dd6ed19e8be6f9f05f776e824ce202822f5d6237093c54d6c5102888
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0.win32-py3.4.exe
Size 288.3 kB
Tags Source
SHA-256 checksum
How to use checksums
81ac6f54a27d091c75333f7c90082d028db45a1e78de59d28ca9f38cf6186395
BLAKE2b-256 checksum
How to use checksums
fb2925ac80b589c0e56214ac64fdd8216992be162a2b2290f9b88b9a5c517cfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0.win32-py3.3.exe
Size 288.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b968771d3db5eef0c17ef6bed2d7756b8ac3cce40e11d5493824863d195dd8e3
BLAKE2b-256 checksum
How to use checksums
fc29387c555f9dc38c6bb084a8df8936e607848de9e2e984dbf7eb2a298c1ceb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0.win32-py2.7.exe
Size 293.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7cbcf866faa23e5229ecfe44ff562f406b4806caae66cb255dbb327247e540aa
BLAKE2b-256 checksum
How to use checksums
fc0f92e595cd2f2a80cead241d45b4ce4961e2515deff101644f3812c75e9bc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0.win32-py2.6.exe
Size 293.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f29ee1aafa452cce77667e75f5e0345b678b8c091b288d0118840df30f303bed
BLAKE2b-256 checksum
How to use checksums
10199e2f8a305f5a6c01feee59dfeb38a73dc1ea4f4af0133cef9a36708f4111
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0-cp34-none-win_amd64.whl
Size 87.9 kB
Tags CPython 3.4 Windows x86-64
SHA-256 checksum
How to use checksums
18e53256390b299ff03bd58dc134d070bde4871d8c93baf08faea316e87544c8
BLAKE2b-256 checksum
How to use checksums
598251ab7cecaf03c8cbe7eff3b341f6564c3fa80baaa5a37643096cb526cae2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0-cp34-none-win32.whl
Size 85.7 kB
Tags CPython 3.4 Windows x86-32
SHA-256 checksum
How to use checksums
9036f9c57a8c8a571f36c7d3b2c9a15a22dc9a95137fa60191e2eaa9527209d5
BLAKE2b-256 checksum
How to use checksums
6dca1d5dafae4d7396a825531296b6837b45129b63463b4eb221ac3429eb157d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0-cp33-none-win_amd64.whl
Size 87.9 kB
Tags CPython 3.3 Windows x86-64
SHA-256 checksum
How to use checksums
44711a1a683369056d99fd08a05789d217205d72b6dbbe75c0b3743c5e1e3768
BLAKE2b-256 checksum
How to use checksums
3c0b648fbaef2a037cc0c05388c0416ba3ca9244c22c4156dba73e4a900540a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

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

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

Download URL psutil-3.0.0-cp27-none-win_amd64.whl
Size 88.0 kB
Tags CPython 2.7 Windows x86-64
SHA-256 checksum
How to use checksums
11c6b17b37ab1ea04f6a1365bc4598637490819d6b744f3947fd3b8b425366b3
BLAKE2b-256 checksum
How to use checksums
f126a0904455b550f7fd5baa069ca10889825cc22440147813713998cd0676a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-3.0.0-cp27-none-win32.whl
Size 85.7 kB
Tags CPython 2.7 Windows x86-32
SHA-256 checksum
How to use checksums
9641677de91769127c82aa032b70a8d9aa75369d0a9965aba880ac335b02eccb
BLAKE2b-256 checksum
How to use checksums
bbcff893fa2fb0888384b5d668e22b6e3652c9ce187e749604027a64a6bd6646
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

This release

3.0.0 This release

14 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