Skip to main content
Download this month Latest version License

Summary

psutil is a module providing an interface for retrieving information on all running processes and system utilization (CPU, memory, disks, network, users) in a portable way by using Python, implementing many functionalities offered by command line tools such as: ps, top, df, kill, free, lsof, free, netstat, ifconfig, nice, ionice, iostat, iotop, uptime, pidof, tty, who, taskset, pmap.

It currently supports Linux, Windows, OSX, FreeBSD, Sun Solaris both 32-bit and 64-bit with Python versions from 2.4 to 3.4 by using a single code base.

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='ext4', 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)}
>>>

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 files for psutil 2.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 2.0.0
File Size Uploaded
psutil-2.0.0.tar.gz 207.2 kB Details

Built distributions (wheels)

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

Total release size: 2.5 MB

Release files / psutil-2.0.0.tar.gz

Download URL psutil-2.0.0.tar.gz
Size 207.2 kB
Tags Source
SHA-256 checksum
How to use checksums
38af34b0f40a4f50988a7401b7111ae4468beb5bcce0fbae409504dd3d5f2e8d
BLAKE2b-256 checksum
How to use checksums
9c2cd4380234ddc21ecfb03691a982f5f26b03061e165658ac455b61886fe3ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win-amd64-py3.4.exe
Size 310.1 kB
Tags Source
SHA-256 checksum
How to use checksums
12b9c02e108e887a43e0ed44e3a8e9968e65236d6d0b79c45891471ea2b9e14d
BLAKE2b-256 checksum
How to use checksums
67940dded4aab9c4992bddb311d2ae8fd9a638df5f6039d12a4fe66481f3ea1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win-amd64-py3.3.exe
Size 309.0 kB
Tags Source
SHA-256 checksum
How to use checksums
219cf2e5832cf68798e522e815d79a7307dea1f6b1d9b2372704f6e7fea085f3
BLAKE2b-256 checksum
How to use checksums
ebdbab023b5ce09f314ee58ee4b9e73e85172dd06272501570a34a1afe6115c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win-amd64-py2.7.exe
Size 310.6 kB
Tags Source
SHA-256 checksum
How to use checksums
32f27f9be7c03f60f61dc27af2464cfb1edd64525d05b81478e80dc12913fe3b
BLAKE2b-256 checksum
How to use checksums
c310c0e1b505d7d2b4a7f3294c1b4b2bc2644a4629462d777fe2cdcd57b1debe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win32-py3.4.exe
Size 275.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4239b2431c825db2ad98e404a96320f0c78fb1c7d5bdf52a49a00d36bedfa0df
BLAKE2b-256 checksum
How to use checksums
c48035eb7f189482d25e3669871e7dcd295ec38f792dc4670b8635d72b4f949a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win32-py3.3.exe
Size 275.6 kB
Tags Source
SHA-256 checksum
How to use checksums
380f8ff680ce3c8fdd7b31a3fe42d697b15a0c8677559691ed90b755051a5acf
BLAKE2b-256 checksum
How to use checksums
775ae87efff3e46862421a9c87847e63ebecd3bb332031305b476399918fea4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win32-py2.7.exe
Size 280.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4f9c78cdd57e1c83242096f8343617ae038efd1c23af3864c25992335eabed3f
BLAKE2b-256 checksum
How to use checksums
18ddc81485b54894c35fd8b62822563293db7c4dd17a05ea4eade169cf383266
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win32-py2.6.exe
Size 280.9 kB
Tags Source
SHA-256 checksum
How to use checksums
33b580008e0c65073198472da81d0d0c50d2a30e3e82c269713b1e3bdf14c2c6
BLAKE2b-256 checksum
How to use checksums
2f6f7326e900c5333d59aa96a574d13321c94a9357ab56b0dd489b8f24ebab78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win32-py2.5.exe
Size 147.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f669fe7e7cab107fb738362366cc9e0ecda532269ac3a9815a28930b474edf0b
BLAKE2b-256 checksum
How to use checksums
f8ba346cc719249b9a5281dab059cb8796aff6faf487142f50966fc08330ad79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL psutil-2.0.0.win32-py2.4.exe
Size 143.7 kB
Tags Source
SHA-256 checksum
How to use checksums
54d8636623a4f676a9a38b0afe3dfad5f1b90f710f2cb6c55e1a0803813d76a5
BLAKE2b-256 checksum
How to use checksums
76a348c0984c0b65be53a9e3e090df0cd5f3e6bddd767c3f8e62cf286be240e1
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

2.1.1

10 release files

This release

2.0.0 This release

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