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 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 history Release notifications | RSS feed

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

Uploaded Source

Built Distributions

psutil-2.0.0.win-amd64-py3.4.exe (310.1 kB view details)

Uploaded Source

psutil-2.0.0.win-amd64-py3.3.exe (309.0 kB view details)

Uploaded Source

psutil-2.0.0.win-amd64-py2.7.exe (310.6 kB view details)

Uploaded Source

psutil-2.0.0.win32-py3.4.exe (275.6 kB view details)

Uploaded Source

psutil-2.0.0.win32-py3.3.exe (275.6 kB view details)

Uploaded Source

psutil-2.0.0.win32-py2.7.exe (280.7 kB view details)

Uploaded Source

psutil-2.0.0.win32-py2.6.exe (280.9 kB view details)

Uploaded Source

psutil-2.0.0.win32-py2.5.exe (147.7 kB view details)

Uploaded Source

psutil-2.0.0.win32-py2.4.exe (143.7 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for psutil-2.0.0.tar.gz
Algorithm Hash digest
SHA256 38af34b0f40a4f50988a7401b7111ae4468beb5bcce0fbae409504dd3d5f2e8d
MD5 9ee83ff3d68396f91ebdf71ae83b152d
BLAKE2b-256 9c2cd4380234ddc21ecfb03691a982f5f26b03061e165658ac455b61886fe3ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 12b9c02e108e887a43e0ed44e3a8e9968e65236d6d0b79c45891471ea2b9e14d
MD5 403c5ffeecabb70b5c07eaf9ba2d59aa
BLAKE2b-256 67940dded4aab9c4992bddb311d2ae8fd9a638df5f6039d12a4fe66481f3ea1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 219cf2e5832cf68798e522e815d79a7307dea1f6b1d9b2372704f6e7fea085f3
MD5 ecdca3c4f198d60650972c2a63bfcabc
BLAKE2b-256 ebdbab023b5ce09f314ee58ee4b9e73e85172dd06272501570a34a1afe6115c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 32f27f9be7c03f60f61dc27af2464cfb1edd64525d05b81478e80dc12913fe3b
MD5 906f8c77c3d41fc62fdc51e61c2438b8
BLAKE2b-256 c310c0e1b505d7d2b4a7f3294c1b4b2bc2644a4629462d777fe2cdcd57b1debe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win32-py3.4.exe
Algorithm Hash digest
SHA256 4239b2431c825db2ad98e404a96320f0c78fb1c7d5bdf52a49a00d36bedfa0df
MD5 cdbdda0e4cd4ce8912443e1c2ce32a8c
BLAKE2b-256 c48035eb7f189482d25e3669871e7dcd295ec38f792dc4670b8635d72b4f949a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win32-py3.3.exe
Algorithm Hash digest
SHA256 380f8ff680ce3c8fdd7b31a3fe42d697b15a0c8677559691ed90b755051a5acf
MD5 afba489d53f3171727632623e747f41f
BLAKE2b-256 775ae87efff3e46862421a9c87847e63ebecd3bb332031305b476399918fea4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win32-py2.7.exe
Algorithm Hash digest
SHA256 4f9c78cdd57e1c83242096f8343617ae038efd1c23af3864c25992335eabed3f
MD5 206f19a41fbf08de0f1eaac5220cb85a
BLAKE2b-256 18ddc81485b54894c35fd8b62822563293db7c4dd17a05ea4eade169cf383266

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win32-py2.6.exe
Algorithm Hash digest
SHA256 33b580008e0c65073198472da81d0d0c50d2a30e3e82c269713b1e3bdf14c2c6
MD5 b925585a77dbf07eaf9b1d8575ff82ae
BLAKE2b-256 2f6f7326e900c5333d59aa96a574d13321c94a9357ab56b0dd489b8f24ebab78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win32-py2.5.exe
Algorithm Hash digest
SHA256 f669fe7e7cab107fb738362366cc9e0ecda532269ac3a9815a28930b474edf0b
MD5 503e5ff8a6bbfeb8787b84f2ad39d831
BLAKE2b-256 f8ba346cc719249b9a5281dab059cb8796aff6faf487142f50966fc08330ad79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-2.0.0.win32-py2.4.exe
Algorithm Hash digest
SHA256 54d8636623a4f676a9a38b0afe3dfad5f1b90f710f2cb6c55e1a0803813d76a5
MD5 70d3cded7bac87016134983069fb3d5f
BLAKE2b-256 76a348c0984c0b65be53a9e3e090df0cd5f3e6bddd767c3f8e62cf286be240e1

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