psutil - A cross-platform process and system utilities module for Python - Google Project Hosting
Quick links
Summary
psutil is a module providing an interface for retrieving information on all running processes and system utilization (CPU, disk, memory, network) in a portable way by using Python , implementing many functionalities offered by command line tools such as:
- ps
- top
- df
- kill
- free
- lsof
- netstat
- ifconfig
- nice
- ionice
- iostat
- iotop
- uptime
- pidof
- tty
- who
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. Pypy is also known to work.
Example applications
?
top clone (see source code) network stats (see source code) iotop clone (see source code)
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 ] >>> >>> psutil . NUM_CPUS 2 >>>Memory
>>> psutil . phymem_usage () usage ( total = 4153868288 , used = 2854199296 , free = 1299668992 , percent = 34.6 ) >>> psutil . virtmem_usage () usage ( total = 2097147904 , used = 4096 , free = 2097143808 , percent = 0.0 ) >>>Disks
>>> psutil . disk_partitions () [ partition ( device = '/dev/sda1' , mountpoint = '/' , fstype = 'ext4' ), ?partition ( device = '/dev/sda2' , mountpoint = '/home' , fstype = 'ext4' )] >>> >>> 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 )} >>>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 ] >>> >>> psutil . pid_exists ( 7055 ) True >>> >>> 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_percent ( interval = 1.0 ) 12.1 >>> p . get_memory_percent () 0.63423 >>> >>> p . get_memory_info () meminfo ( rss = 7471104 , vms = 68513792 ) >>> p . get_cpu_times () cputimes ( user = 1.02 , system = 0.31 ) >>> >>> 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_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 . nice 0 >>> p . nice = 10 ? # set/change process priority >>> p . nice 10 >>> >>> p . suspend () >>> p . resume () >>> >>> p . terminate () >>> p . wait ( timeout = 3 ) 0 >>> >>> psutil . test () UID ? ? ? PID % CPU % MEM ? ? VSZ ? ? RSS START ? ? TIME COMMAND 0 ? ? ? ? ? 0 ? 0.0 ? 0.0 ? ? ? 0 ? ? ? 0 00 : 12 ? ? 00 : 00 [ sched ] 0 ? ? ? ? ? 1 ? 0.0 ? 0.3 ? ? 1740 ? ? 600 00 : 12 ? ? 00 : 04 / sbin / init 0 ? ? ? ? ? 2 ? 0.0 ? 0.0 ? ? ? 0 ? ? ? 0 00 : 12 ? ? 00 : 00 [ kthreadd ] 0 ? ? ? ? ? 3 ? 0.1 ? 0.0 ? ? ? 0 ? ? ? 0 00 : 12 ? ? 00 : 00 [ migration / 0 ] ... 0 ? ? ? 13239 ? 0.0 ? 2.6 ? ? 13604 ? 1044 00 : 38 ? ? 00 : 00 / usr / sbin / smbd - D 1000 ? ? 23648 ? 1.1 ? 2.4 ? ? 12512 ? 2008 14 : 43 ? ? 00 : 06 sshd : user@pts / 2 1000 ? ? 23649 ? 0.0 ? 1.2 ? ? 5944 ? ? 3340 14 : 43 ? ? 00 : 00 - bash 0 ? ? ? 25926 ? 0.3 ? 1.1 ? ? 5432 ? ? 3072 17 : 55 ? ? 00 : 00 - su 0 ? ? ? 28655 ? 0.0 ? 1.0 ? ? 4932 ? ? 3204 21 : 58 ? ? 00 : 00 python _psutil . py >>>Donate
A lot of time and effort went into making psutil as it is right now. If you feel psutil is useful to you or your business and want to support it's future development please consider donating us ( Giampaolo Rodolà and Jay Loden) some money. We only ask for a small donation, but of course we appreciate any amount.
People who donated so far
- Kim Gr?sman
Mailing lists
users:
http://groups.google.com/group/psutil/SVN commits and issue tracker changes:
http://groups.google.com/group/psutil-commits/Contribute
If you want to help or just give us suggestions about the project and other related things, subscribe to the discussion mailing list . If you want to talk with project team members about psutil and other related things feel free to contact us at the following addresses:
?
Name Country Giampaolo Rodola' Turin (Italy) g.rodola at gmail dot com Jay Loden New Jersey (USA) jloden at gmail dot com Feedbacks and suggestions are greatly appreciated as well as new testers and coders willing to join the development.
For any bug report, patch proposal or feature request, add an entry into the Issue Tracker .Thank you.
Statistics
psutil - A cross-platform process and system utilities module for Python - Google Project Hosting
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
