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

Uploaded Source

Built Distributions

psutil-1.1.2.win-amd64-py3.2.exe (306.8 kB view details)

Uploaded Source

psutil-1.1.2.win-amd64-py2.7.exe (306.2 kB view details)

Uploaded Source

psutil-1.1.2.win32-py3.3.exe (271.0 kB view details)

Uploaded Source

psutil-1.1.2.win32-py3.2.exe (276.3 kB view details)

Uploaded Source

psutil-1.1.2.win32-py2.7.exe (277.0 kB view details)

Uploaded Source

psutil-1.1.2.win32-py2.6.exe (277.3 kB view details)

Uploaded Source

psutil-1.1.2.win32-py2.5.exe (142.9 kB view details)

Uploaded Source

psutil-1.1.2.win32-py2.4.exe (143.0 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for psutil-1.1.2.tar.gz
Algorithm Hash digest
SHA256 adeb1afcb46327bed6603aa8981dce863f052043a52f003e2742ec7c3739677a
MD5 fe9c9a3ed95fe6564acf8b4500c7b5da
BLAKE2b-256 e4b134a4bd75027d08c8db4f6301d6562e333c8d9131dca08b7f76f05aeae00a

See more details on using hashes here.

File details

Details for the file psutil-1.1.2.win-amd64-py3.2.exe.

File metadata

File hashes

Hashes for psutil-1.1.2.win-amd64-py3.2.exe
Algorithm Hash digest
SHA256 6e8ed376b63b15b09a94eff7998dae1f8506bd174d795e509cc735f875fddabe
MD5 2483f1d099933b7bf1b09ab499b290ea
BLAKE2b-256 c9d01e413f0258d02bf77bc1d94002d041b8853584369e4af039cd5cf89e3270

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.1.2.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 4c9e952a7faf50f11fb8bcd6c12c952b063664d9327957c9f6abd498e6ef3bc8
MD5 88506db2f400fcbbb95161a2b86e0df0
BLAKE2b-256 f9df437db01296118d668cf654f097ad2b1c341291ba5dc4b5eb80f0a0a40c52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.1.2.win32-py3.3.exe
Algorithm Hash digest
SHA256 f7dc7507fb9d4edb42709b356eb2e4b3da356efa54d83900e4cef59f3adebfbf
MD5 f440f47ab680c05bdfd7ee7e7a9f3c77
BLAKE2b-256 f57c1a33b78a66a96e740e197ae55719496ba57bb9cee32f710a5a6affa68cc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.1.2.win32-py3.2.exe
Algorithm Hash digest
SHA256 5cfa97b52fb48dbb8255c120b567be4f06802afa7d2fe71b8fe7c7c4ee53ad88
MD5 02d9841f2f3adf67ba725ac08c6442d2
BLAKE2b-256 ddbe1aea1e7a1a3fb44f4c8d887a1d55e960de283d86875f15457a284268e197

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.1.2.win32-py2.7.exe
Algorithm Hash digest
SHA256 6c5be5538202ed7419911178ded41c65e118104fa634109f528a6d2d3e50a7d0
MD5 dbb5cf9becd52e6a1912668c5a527795
BLAKE2b-256 5ed656f2891f6dd56f950866cc39892e5a56e85331d97c39e2634cfc4014f0df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.1.2.win32-py2.6.exe
Algorithm Hash digest
SHA256 f06ee6e1508a12afcfed04a4022ded9f872e2a964a62bd86617ece943d89ab01
MD5 00ba55472837ee48c8977351fae4daee
BLAKE2b-256 3ea45177488368f230acd4708a117c0820fb16843521e2a7a492078a2335bb9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.1.2.win32-py2.5.exe
Algorithm Hash digest
SHA256 e05d83d6b53ea24333c8b04d329e28ff11ecad75945f371ff5ce7f785df36aee
MD5 cdd8d0bcad9d7446785c50da10a18b27
BLAKE2b-256 8de122650079452725e44ec790c3e75282f4d341f359b213b2afc7f2ada46930

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psutil-1.1.2.win32-py2.4.exe
Algorithm Hash digest
SHA256 ecc5ab4537259db7254c6f6dc7b7cb5a7f398c322a01612c272a8222696334a8
MD5 6a7860c16ada71363a9a109be27ec19a
BLAKE2b-256 a763fd5770ec4fe87d30bd836989d314b85662c775a52dbd017747fc69fe8f0e

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