Skip to main content

A process and system utilities module for Python

Project description

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.3 by using a single code base.

Example usages

CPU

>>> import psutil
>>> psutil.cpu_times()
cputimes(user=3961.46, nice=169.729, system=2150.659, idle=16900.540,
         iowait=629.509, irq=0.0, softirq=19.422, 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]
[7.0, 8.5]
[1.2, 9.0]
>>>
>>> for x in range(3):
...     psutil.cpu_times_percent(interval=1, percpu=False)
...
cpupercent(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)
cpupercent(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)
cpupercent(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)

Memory

>>> psutil.virtual_memory()
vmem(total=8374149120L, available=2081050624L, percent=75.1, used=8074080256L,
     free=300068864L, active=3294920704, inactive=1361616896, buffers=529895424L,
     cached=1251086336)
>>> psutil.swap_memory()
swap(total=2097147904L, used=296128512L, free=1801019392L, percent=14.1,
     sin=304193536, sout=677842944)
>>>

Disks

>>> psutil.disk_partitions()
[partition(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),
 partition(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw')]
>>>
>>> psutil.disk_usage('/')
usage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
>>>
>>> psutil.disk_io_counters(perdisk=False)
iostat(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': iostat(bytes_sent=485291293, bytes_recv=6004858642,
                packets_sent=3251564, packets_recv=4787798,
                errin=0, errout=0, dropin=0, dropout=0),
 'lo': iostat(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567,
              packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}
>>>

Other system info

>>> psutil.get_users()
[user(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0),
 user(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0)]
>>>
>>> psutil.get_boot_time()
1365519115.0
>>>
>>> psutil.NUM_CPUS
4
>>> psutil.TOTAL_PHYMEM
8374120448L
>>>

Process management

>>> import psutil
>>> psutil.get_pid_list()
[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.getcwd()
'/home/giampaolo'
>>> p.cmdline
['/usr/bin/python', 'main.py']
>>>
>>> str(p.status)
'running'
>>> p.username
'giampaolo'
>>> p.create_time
1267551141.5019531
>>> p.terminal
'/dev/pts/0'
>>>
>>> p.uids
user(real=1000, effective=1000, saved=1000)
>>> p.gids
group(real=1000, effective=1000, saved=1000)
>>>
>>> p.get_cpu_times()
cputimes(user=1.02, system=0.31)
>>> p.get_cpu_percent(interval=1.0)
12.1
>>> p.get_cpu_affinity()
[0, 1, 2, 3]
>>> p.set_cpu_affinity([0])
>>>
>>> p.get_memory_percent()
0.63423
>>>
>>> p.get_memory_info()
meminfo(rss=7471104, vms=68513792)
>>> p.get_ext_memory_info()
meminfo(rss=9662464, vms=49192960, shared=3612672, text=2564096, lib=0, data=5754880, dirty=0)
>>> p.get_memory_maps()
[mmap(path='/lib/x86_64-linux-gnu/libutil-2.15.so', rss=16384, anonymous=8192, swap=0),
 mmap(path='/lib/x86_64-linux-gnu/libc-2.15.so', rss=6384, anonymous=15, swap=0),
 mmap(path='/lib/x86_64-linux-gnu/libcrypto.so.1.0.0', rss=34124, anonymous=1245, swap=0),
 mmap(path='[heap]', rss=54653, anonymous=8192, swap=0),
 mmap(path='[stack]', rss=1542, anonymous=166, swap=0),
 ...]
>>>
>>> p.get_io_counters()
io(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632)
>>>
>>> p.get_open_files()
[openfile(path='/home/giampaolo/svn/psutil/somefile', fd=3)]
>>>
>>> p.get_connections()
[connection(fd=115, family=2, type=1, laddr=('10.0.0.1', 48776),
            raddr=('93.186.135.91', 80), status='ESTABLISHED'),
 connection(fd=117, family=2, type=1, laddr=('10.0.0.1', 43761),
            raddr=('72.14.234.100', 80), status='CLOSING'),
 connection(fd=119, family=2, type=1, laddr=('10.0.0.1', 60759),
            raddr=('72.14.234.104', 80), status='ESTABLISHED'),
 connection(fd=123, family=2, type=1, laddr=('10.0.0.1', 51314),
            raddr=('72.14.234.83', 443), status='SYN_SENT')]
>>>
>>> p.get_num_threads()
4
>>> p.get_num_fds()
8
>>> p.get_threads()
[thread(id=5234, user_time=22.5, system_time=9.2891),
 thread(id=5235, user_time=0.0, system_time=0.0),
 thread(id=5236, user_time=0.0, system_time=0.0),
 thread(id=5237, user_time=0.0707, system_time=1.1)]
>>>
>>> p.get_num_ctx_switches()
amount(voluntary=78, involuntary=19)
>>>
>>> p.get_nice()
0
>>> p.set_nice(10)
>>>
>>> p.set_ionice(psutil.IOPRIO_CLASS_IDLE)  # IO priority (Windows and Linux only)
>>> p.get_ionice()
ionice(ioclass=3, value=0)
>>>
>>> p.set_rlimit(psutil.RLIMIT_NOFILE, (5, 5))  # resource limits (Linux only)
>>> p.get_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
>>>

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

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

psutil-1.2.0.win-amd64-py2.7.exe (307.0 kB view details)

Uploaded Source

psutil-1.2.0.win32-py3.3.exe (271.9 kB view details)

Uploaded Source

psutil-1.2.0.win32-py3.2.exe (277.2 kB view details)

Uploaded Source

psutil-1.2.0.win32-py2.7.exe (277.9 kB view details)

Uploaded Source

psutil-1.2.0.win32-py2.6.exe (278.1 kB view details)

Uploaded Source

psutil-1.2.0.win32-py2.5.exe (143.8 kB view details)

Uploaded Source

psutil-1.2.0.win32-py2.4.exe (143.8 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for psutil-1.2.0.tar.gz
Algorithm Hash digest
SHA256 c3a2b02e92363837499680760b674b3bf3bd03dd9528a5dc41392625a61b162a
MD5 f8ae906249e65db21f17d873ae07e584
BLAKE2b-256 77898ee72ae2b5e3c749e43a9c1e95d61eceff022ab7c929cdde8a3b7539a707

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.2.0.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 2bedcda55618f71bc98d6669bd190e2b51b940e3a3af2512dd77745cb1ebc101
MD5 b2abcb587cc351eb6dbc23eed4304cc4
BLAKE2b-256 9cd1598bcaa9701e06561cb8823a7a04ee44e702b0e327ef0a65bdd97b019613

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.2.0.win32-py3.3.exe
Algorithm Hash digest
SHA256 3e23d3b1ef5f20a458092887d1df32f55eaf4fc86f2ed49cc68cf164537128d6
MD5 ccee2703e25a62085503f4890fece502
BLAKE2b-256 24394630dff3d0fa4896db905a118877fce5b72ced6629ca9958e207f7a0b198

See more details on using hashes here.

File details

Details for the file psutil-1.2.0.win32-py3.2.exe.

File metadata

File hashes

Hashes for psutil-1.2.0.win32-py3.2.exe
Algorithm Hash digest
SHA256 2b588673530d67f45287c31b6dfef02ee4e753aee7e7216448e6dbcb95b482e1
MD5 5c75c39f381567c5a7d94f3e549b749d
BLAKE2b-256 051020a2364e4e69206d66da106288b65bf5bbde0d648aad5bb829f3eb08fabb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.2.0.win32-py2.7.exe
Algorithm Hash digest
SHA256 1024eff34ff14f2899186549ca8f8e461403e5700910e52eb013ffffb078cda3
MD5 8e2899592e03cb5564b81062e21a706a
BLAKE2b-256 9d1ab8e679a7e47229d07e41439a43fc1be48c0d34774e5e35ad6730398485bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.2.0.win32-py2.6.exe
Algorithm Hash digest
SHA256 fb0c3942a48fde9c52828dae4074381556eff8eb5651bdc9c4c107b40dc8318e
MD5 49fa4501b0aad2fff6eb6f5600ff06c3
BLAKE2b-256 ae4ae62000dbe462270c30f1e2f2dcc913596f70e264d9a656f881bb9f487283

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.2.0.win32-py2.5.exe
Algorithm Hash digest
SHA256 40747c59cf92cef26d595a9cefaac9c1a4bc0290abff6004bb092ee2ddec7d7b
MD5 7cfbcae9514fa7598f2672a344205835
BLAKE2b-256 88173ba1b45ec63d666c2631f16679adb819564feb775cfd9e774d23e5774a44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.2.0.win32-py2.4.exe
Algorithm Hash digest
SHA256 417695f66562a22ac4f92bf7df1e9dda6264579eb308badd2c3e85df88ab9436
MD5 9e4ed2aa084710da66f3cce1ae80e830
BLAKE2b-256 a4ba4b54baace7b49b73df74b54815337878137d25fda506e518f2d8dd2472fc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page