A process and system utilities module for Python
Project Links
Meta
Author: Giampaolo Rodola
Classifiers
Development Status
- 5 - Production/Stable
Environment
- Console
Operating System
- MacOS :: MacOS X
- Microsoft
- Microsoft :: Windows :: Windows NT/2000
- POSIX
- POSIX :: Linux
- POSIX :: BSD :: FreeBSD
- OS Independent
Programming Language
- C
- Python
- Python :: 2
- Python :: 2.4
- Python :: 2.5
- Python :: 2.6
- Python :: 2.7
- Python :: 3
- Python :: 3.0
- Python :: 3.1
- Python :: 3.2
- Python :: 3.3
Topic
- System :: Monitoring
- System :: Networking
- System :: Networking :: Monitoring
- System :: Benchmark
- System :: Hardware
- System :: Systems Administration
- Utilities
- Software Development :: Libraries
- Software Development :: Libraries :: Python Modules
Intended Audience
- Developers
- System Administrators
License
- OSI Approved :: BSD License
Quick links
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 and FreeBSD 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) >>> >>> 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] >>>
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() iostat(read_count=719566, write_count=1082197, read_bytes=18626220032, write_bytes=24081764352, read_time=5023392, write_time=63199568) >>>
Network
>>> psutil.network_io_counters(pernic=True) {'lo': iostat(bytes_sent=799953745, bytes_recv=799953745, packets_sent=453698, packets_recv=453698), 'eth0': iostat(bytes_sent=734324837, bytes_recv=4163935363, packets_sent=3605828, packets_recv=4096685)} >>>
Users
>>> 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)] >>>
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, local_address=('10.0.0.1', 48776), remote_address=('93.186.135.91', 80), status='ESTABLISHED'), connection(fd=117, family=2, type=1, local_address=('10.0.0.1', 43761), remote_address=('72.14.234.100', 80), status='CLOSING'), connection(fd=119, family=2, type=1, local_address=('10.0.0.1', 60759), remote_address=('72.14.234.104', 80), status='ESTABLISHED'), connection(fd=123, family=2, type=1, local_address=('10.0.0.1', 51314), remote_address=('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.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 >>>
Feb 13, 2025
7.0.0
Dec 19, 2024
6.1.1
Oct 17, 2024
6.1.0
Jun 18, 2024
6.0.0
Jan 19, 2024
5.9.8
Dec 17, 2023
5.9.7
Oct 15, 2023
5.9.6
Apr 17, 2023
5.9.5
Nov 07, 2022
5.9.4
Oct 18, 2022
5.9.3
Sep 04, 2022
5.9.2
May 20, 2022
5.9.1
Dec 29, 2021
5.9.0
Dec 19, 2020
5.8.0
Oct 24, 2020
5.7.3
Jul 15, 2020
5.7.2
Jul 15, 2020
5.7.1
Feb 18, 2020
5.7.0
Nov 26, 2019
5.6.7
Nov 25, 2019
5.6.6
Nov 06, 2019
5.6.5
Nov 04, 2019
5.6.4
Jun 11, 2019
5.6.3
Apr 26, 2019
5.6.2
Mar 11, 2019
5.6.1
Mar 05, 2019
5.6.0
Feb 15, 2019
5.5.1
Jan 23, 2019
5.5.0
Oct 30, 2018
5.4.8
Aug 14, 2018
5.4.7
Jun 07, 2018
5.4.6
Apr 13, 2018
5.4.5
Apr 13, 2018
5.4.4
Jan 01, 2018
5.4.3
Dec 07, 2017
5.4.2
Nov 08, 2017
5.4.1
Oct 12, 2017
5.4.0
Sep 10, 2017
5.3.1
Sep 01, 2017
5.3.0
Apr 10, 2017
5.2.2
Mar 24, 2017
5.2.1
Mar 05, 2017
5.2.0
Feb 07, 2017
5.1.3
Feb 03, 2017
5.1.2
Feb 03, 2017
5.1.1
Feb 01, 2017
5.1.0
Dec 21, 2016
5.0.1
Nov 06, 2016
5.0.0
Oct 26, 2016
4.4.2
Oct 25, 2016
4.4.1
Oct 23, 2016
4.4.0
Sep 01, 2016
4.3.1
Jun 18, 2016
4.3.0
May 15, 2016
4.2.0
Mar 12, 2016
4.1.0
Feb 17, 2016
4.0.0
Jan 20, 2016
3.4.2
Jan 15, 2016
3.4.1
Nov 25, 2015
3.3.0
Oct 04, 2015
3.2.2
Sep 03, 2015
3.2.1
Sep 02, 2015
3.2.0
Jul 15, 2015
3.1.1
Jul 15, 2015
3.1.0
Jun 18, 2015
3.0.1
Jun 13, 2015
3.0.0
Feb 02, 2015
2.2.1
Jan 06, 2015
2.2.0
Sep 26, 2014
2.1.3
Sep 21, 2014
2.1.2
Apr 30, 2014
2.1.1
Apr 08, 2014
2.1.0
Mar 10, 2014
2.0.0
Nov 25, 2013
1.2.1
Nov 20, 2013
1.2.0
Nov 07, 2013
1.1.3
Oct 22, 2013
1.1.2
Oct 07, 2013
1.1.1
Sep 28, 2013
1.1.0
Feb 06, 2014
1.0.1
Feb 06, 2014
1.0.0
Feb 06, 2014
0.7.1
Feb 06, 2014
0.7.0
Feb 06, 2014
0.6.1
Feb 06, 2014
0.6.0
Feb 06, 2014
0.5.1
Feb 06, 2014
0.5.0
Feb 06, 2014
0.4.1
Feb 06, 2014
0.4.0
Feb 06, 2014
0.3.0
Feb 06, 2014
0.2.1
Feb 06, 2014
0.2.0
Feb 06, 2014
0.1.3
Feb 06, 2014
0.1.2
Feb 06, 2014
0.1.1
Sep 28, 2013
0.0rc0
Files in release
No dependencies