Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/psutil-5.8.0.dist-info/METADATA @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 Metadata-Version: 2.1 | |
2 Name: psutil | |
3 Version: 5.8.0 | |
4 Summary: Cross-platform lib for process and system monitoring in Python. | |
5 Home-page: https://github.com/giampaolo/psutil | |
6 Author: Giampaolo Rodola | |
7 Author-email: g.rodola@gmail.com | |
8 License: BSD | |
9 Keywords: ps,top,kill,free,lsof,netstat,nice,tty,ionice,uptime,taskmgr,process,df,iotop,iostat,ifconfig,taskset,who,pidof,pmap,smem,pstree,monitoring,ulimit,prlimit,smem,performance,metrics,agent,observability | |
10 Platform: Platform Independent | |
11 Classifier: Development Status :: 5 - Production/Stable | |
12 Classifier: Environment :: Console | |
13 Classifier: Environment :: Win32 (MS Windows) | |
14 Classifier: Intended Audience :: Developers | |
15 Classifier: Intended Audience :: Information Technology | |
16 Classifier: Intended Audience :: System Administrators | |
17 Classifier: License :: OSI Approved :: BSD License | |
18 Classifier: Operating System :: MacOS :: MacOS X | |
19 Classifier: Operating System :: Microsoft :: Windows :: Windows 10 | |
20 Classifier: Operating System :: Microsoft :: Windows :: Windows 7 | |
21 Classifier: Operating System :: Microsoft :: Windows :: Windows 8 | |
22 Classifier: Operating System :: Microsoft :: Windows :: Windows 8.1 | |
23 Classifier: Operating System :: Microsoft :: Windows :: Windows Server 2003 | |
24 Classifier: Operating System :: Microsoft :: Windows :: Windows Server 2008 | |
25 Classifier: Operating System :: Microsoft :: Windows :: Windows Vista | |
26 Classifier: Operating System :: Microsoft | |
27 Classifier: Operating System :: OS Independent | |
28 Classifier: Operating System :: POSIX :: AIX | |
29 Classifier: Operating System :: POSIX :: BSD :: FreeBSD | |
30 Classifier: Operating System :: POSIX :: BSD :: NetBSD | |
31 Classifier: Operating System :: POSIX :: BSD :: OpenBSD | |
32 Classifier: Operating System :: POSIX :: BSD | |
33 Classifier: Operating System :: POSIX :: Linux | |
34 Classifier: Operating System :: POSIX :: SunOS/Solaris | |
35 Classifier: Operating System :: POSIX | |
36 Classifier: Programming Language :: C | |
37 Classifier: Programming Language :: Python :: 2 | |
38 Classifier: Programming Language :: Python :: 2.6 | |
39 Classifier: Programming Language :: Python :: 2.7 | |
40 Classifier: Programming Language :: Python :: 3 | |
41 Classifier: Programming Language :: Python :: Implementation :: CPython | |
42 Classifier: Programming Language :: Python :: Implementation :: PyPy | |
43 Classifier: Programming Language :: Python | |
44 Classifier: Topic :: Software Development :: Libraries :: Python Modules | |
45 Classifier: Topic :: Software Development :: Libraries | |
46 Classifier: Topic :: System :: Benchmark | |
47 Classifier: Topic :: System :: Hardware :: Hardware Drivers | |
48 Classifier: Topic :: System :: Hardware | |
49 Classifier: Topic :: System :: Monitoring | |
50 Classifier: Topic :: System :: Networking :: Monitoring :: Hardware Watchdog | |
51 Classifier: Topic :: System :: Networking :: Monitoring | |
52 Classifier: Topic :: System :: Networking | |
53 Classifier: Topic :: System :: Operating System | |
54 Classifier: Topic :: System :: Systems Administration | |
55 Classifier: Topic :: Utilities | |
56 Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* | |
57 Description-Content-Type: text/x-rst | |
58 Provides-Extra: test | |
59 Requires-Dist: ipaddress ; (python_version < "3.0") and extra == 'test' | |
60 Requires-Dist: mock ; (python_version < "3.0") and extra == 'test' | |
61 Requires-Dist: unittest2 ; (python_version < "3.0") and extra == 'test' | |
62 Requires-Dist: enum34 ; (python_version <= "3.4") and extra == 'test' | |
63 Requires-Dist: pywin32 ; (sys_platform == "win32") and extra == 'test' | |
64 Requires-Dist: wmi ; (sys_platform == "win32") and extra == 'test' | |
65 | |
66 | |downloads| |stars| |forks| |contributors| |coverage| |quality| | |
67 | |version| |py-versions| |packages| |license| | |
68 | |github-actions| |appveyor| |doc| |twitter| |tidelift| | |
69 | |
70 .. |downloads| image:: https://img.shields.io/pypi/dm/psutil.svg | |
71 :target: https://pepy.tech/project/psutil | |
72 :alt: Downloads | |
73 | |
74 .. |stars| image:: https://img.shields.io/github/stars/giampaolo/psutil.svg | |
75 :target: https://github.com/giampaolo/psutil/stargazers | |
76 :alt: Github stars | |
77 | |
78 .. |forks| image:: https://img.shields.io/github/forks/giampaolo/psutil.svg | |
79 :target: https://github.com/giampaolo/psutil/network/members | |
80 :alt: Github forks | |
81 | |
82 .. |contributors| image:: https://img.shields.io/github/contributors/giampaolo/psutil.svg | |
83 :target: https://github.com/giampaolo/psutil/graphs/contributors | |
84 :alt: Contributors | |
85 | |
86 .. |quality| image:: https://img.shields.io/codacy/grade/ce63e7f7f69d44b5b59682196e6fbfca.svg | |
87 :target: https://www.codacy.com/app/g-rodola/psutil?utm_source=github.com&utm_medium=referral&utm_content=giampaolo/psutil&utm_campaign=Badge_Grade | |
88 :alt: Code quality | |
89 | |
90 .. |github-actions| image:: https://img.shields.io/github/workflow/status/giampaolo/psutil/CI?label=Linux%2C%20macOS%2C%20FreeBSD | |
91 :target: https://github.com/giampaolo/psutil/actions?query=workflow%3ACI | |
92 :alt: Linux, macOS, Windows tests | |
93 | |
94 .. |appveyor| image:: https://img.shields.io/appveyor/ci/giampaolo/psutil/master.svg?maxAge=3600&label=Windows | |
95 :target: https://ci.appveyor.com/project/giampaolo/psutil | |
96 :alt: Windows tests (Appveyor) | |
97 | |
98 .. |coverage| image:: https://coveralls.io/repos/github/giampaolo/psutil/badge.svg?branch=master | |
99 :target: https://coveralls.io/github/giampaolo/psutil?branch=master | |
100 :alt: Test coverage (coverall.io) | |
101 | |
102 .. |doc| image:: https://readthedocs.org/projects/psutil/badge/?version=latest | |
103 :target: http://psutil.readthedocs.io/en/latest/?badge=latest | |
104 :alt: Documentation Status | |
105 | |
106 .. |version| image:: https://img.shields.io/pypi/v/psutil.svg?label=pypi | |
107 :target: https://pypi.org/project/psutil | |
108 :alt: Latest version | |
109 | |
110 .. |py-versions| image:: https://img.shields.io/pypi/pyversions/psutil.svg | |
111 :target: https://pypi.org/project/psutil | |
112 :alt: Supported Python versions | |
113 | |
114 .. |packages| image:: https://repology.org/badge/tiny-repos/python:psutil.svg | |
115 :target: https://repology.org/metapackage/python:psutil/versions | |
116 :alt: Binary packages | |
117 | |
118 .. |license| image:: https://img.shields.io/pypi/l/psutil.svg | |
119 :target: https://github.com/giampaolo/psutil/blob/master/LICENSE | |
120 :alt: License | |
121 | |
122 .. |twitter| image:: https://img.shields.io/twitter/follow/grodola.svg?label=follow&style=flat&logo=twitter&logoColor=4FADFF | |
123 :target: https://twitter.com/grodola | |
124 :alt: Twitter Follow | |
125 | |
126 .. |tidelift| image:: https://tidelift.com/badges/github/giampaolo/psutil?style=flat | |
127 :target: https://tidelift.com/subscription/pkg/pypi-psutil?utm_source=pypi-psutil&utm_medium=referral&utm_campaign=readme | |
128 :alt: Tidelift | |
129 | |
130 ----- | |
131 | |
132 Quick links | |
133 =========== | |
134 | |
135 - `Home page <https://github.com/giampaolo/psutil>`_ | |
136 - `Install <https://github.com/giampaolo/psutil/blob/master/INSTALL.rst>`_ | |
137 - `Documentation <http://psutil.readthedocs.io>`_ | |
138 - `Download <https://pypi.org/project/psutil/#files>`_ | |
139 - `Forum <http://groups.google.com/group/psutil/topics>`_ | |
140 - `StackOverflow <https://stackoverflow.com/questions/tagged/psutil>`_ | |
141 - `Blog <https://gmpy.dev/tags/psutil>`_ | |
142 - `What's new <https://github.com/giampaolo/psutil/blob/master/HISTORY.rst>`_ | |
143 | |
144 | |
145 Summary | |
146 ======= | |
147 | |
148 psutil (process and system utilities) is a cross-platform library for | |
149 retrieving information on **running processes** and **system utilization** | |
150 (CPU, memory, disks, network, sensors) in Python. | |
151 It is useful mainly for **system monitoring**, **profiling and limiting process | |
152 resources** and **management of running processes**. | |
153 It implements many functionalities offered by classic UNIX command line tools | |
154 such as *ps, top, iotop, lsof, netstat, ifconfig, free* and others. | |
155 psutil currently supports the following platforms: | |
156 | |
157 - **Linux** | |
158 - **Windows** | |
159 - **macOS** | |
160 - **FreeBSD, OpenBSD**, **NetBSD** | |
161 - **Sun Solaris** | |
162 - **AIX** | |
163 | |
164 Supported Python versions are **2.6**, **2.7**, **3.4+** and | |
165 `PyPy <http://pypy.org/>`__. | |
166 | |
167 Funding | |
168 ======= | |
169 | |
170 While psutil is free software and will always be, the project would benefit | |
171 immensely from some funding. | |
172 Keeping up with bug reports and maintenance has become hardly sustainable for | |
173 me alone in terms of time. | |
174 If you're a company that's making significant use of psutil you can consider | |
175 becoming a sponsor via `GitHub <https://github.com/sponsors/giampaolo>`__, | |
176 `Open Collective <https://opencollective.com/psutil>`__ or | |
177 `PayPal <https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A9ZS7PKKRM3S8>`__ | |
178 and have your logo displayed in here and psutil `doc <https://psutil.readthedocs.io>`__. | |
179 | |
180 Sponsors | |
181 ======== | |
182 | |
183 .. image:: https://github.com/giampaolo/psutil/raw/master/docs/_static/tidelift-logo.png | |
184 :width: 200 | |
185 :alt: Alternative text | |
186 | |
187 `Add your logo <https://github.com/sponsors/giampaolo>`__. | |
188 | |
189 Example usages | |
190 ============== | |
191 | |
192 This represents pretty much the whole psutil API. | |
193 | |
194 CPU | |
195 --- | |
196 | |
197 .. code-block:: python | |
198 | |
199 >>> import psutil | |
200 >>> | |
201 >>> psutil.cpu_times() | |
202 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) | |
203 >>> | |
204 >>> for x in range(3): | |
205 ... psutil.cpu_percent(interval=1) | |
206 ... | |
207 4.0 | |
208 5.9 | |
209 3.8 | |
210 >>> | |
211 >>> for x in range(3): | |
212 ... psutil.cpu_percent(interval=1, percpu=True) | |
213 ... | |
214 [4.0, 6.9, 3.7, 9.2] | |
215 [7.0, 8.5, 2.4, 2.1] | |
216 [1.2, 9.0, 9.9, 7.2] | |
217 >>> | |
218 >>> for x in range(3): | |
219 ... psutil.cpu_times_percent(interval=1, percpu=False) | |
220 ... | |
221 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) | |
222 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) | |
223 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) | |
224 >>> | |
225 >>> psutil.cpu_count() | |
226 4 | |
227 >>> psutil.cpu_count(logical=False) | |
228 2 | |
229 >>> | |
230 >>> psutil.cpu_stats() | |
231 scpustats(ctx_switches=20455687, interrupts=6598984, soft_interrupts=2134212, syscalls=0) | |
232 >>> | |
233 >>> psutil.cpu_freq() | |
234 scpufreq(current=931.42925, min=800.0, max=3500.0) | |
235 >>> | |
236 >>> psutil.getloadavg() # also on Windows (emulated) | |
237 (3.14, 3.89, 4.67) | |
238 | |
239 Memory | |
240 ------ | |
241 | |
242 .. code-block:: python | |
243 | |
244 >>> psutil.virtual_memory() | |
245 svmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304) | |
246 >>> psutil.swap_memory() | |
247 sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944) | |
248 >>> | |
249 | |
250 Disks | |
251 ----- | |
252 | |
253 .. code-block:: python | |
254 | |
255 >>> psutil.disk_partitions() | |
256 [sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid', maxfile=255, maxpath=4096), | |
257 sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw', maxfile=255, maxpath=4096)] | |
258 >>> | |
259 >>> psutil.disk_usage('/') | |
260 sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5) | |
261 >>> | |
262 >>> psutil.disk_io_counters(perdisk=False) | |
263 sdiskio(read_count=719566, write_count=1082197, read_bytes=18626220032, write_bytes=24081764352, read_time=5023392, write_time=63199568, read_merged_count=619166, write_merged_count=812396, busy_time=4523412) | |
264 >>> | |
265 | |
266 Network | |
267 ------- | |
268 | |
269 .. code-block:: python | |
270 | |
271 >>> psutil.net_io_counters(pernic=True) | |
272 {'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0), | |
273 'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)} | |
274 >>> | |
275 >>> psutil.net_connections(kind='tcp') | |
276 [sconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED', pid=1254), | |
277 sconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=43761), raddr=addr(ip='72.14.234.100', port=80), status='CLOSING', pid=2987), | |
278 ...] | |
279 >>> | |
280 >>> psutil.net_if_addrs() | |
281 {'lo': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None), | |
282 snicaddr(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None), | |
283 snicaddr(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)], | |
284 'wlan0': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None), | |
285 snicaddr(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None), | |
286 snicaddr(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]} | |
287 >>> | |
288 >>> psutil.net_if_stats() | |
289 {'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536), | |
290 'wlan0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500)} | |
291 >>> | |
292 | |
293 Sensors | |
294 ------- | |
295 | |
296 .. code-block:: python | |
297 | |
298 >>> import psutil | |
299 >>> psutil.sensors_temperatures() | |
300 {'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)], | |
301 'asus': [shwtemp(label='', current=47.0, high=None, critical=None)], | |
302 'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0), | |
303 shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0)]} | |
304 >>> | |
305 >>> psutil.sensors_fans() | |
306 {'asus': [sfan(label='cpu_fan', current=3200)]} | |
307 >>> | |
308 >>> psutil.sensors_battery() | |
309 sbattery(percent=93, secsleft=16628, power_plugged=False) | |
310 >>> | |
311 | |
312 Other system info | |
313 ----------------- | |
314 | |
315 .. code-block:: python | |
316 | |
317 >>> import psutil | |
318 >>> psutil.users() | |
319 [suser(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0, pid=1352), | |
320 suser(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0, pid=1788)] | |
321 >>> | |
322 >>> psutil.boot_time() | |
323 1365519115.0 | |
324 >>> | |
325 | |
326 Process management | |
327 ------------------ | |
328 | |
329 .. code-block:: python | |
330 | |
331 >>> import psutil | |
332 >>> psutil.pids() | |
333 [1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224, 268, 1215, | |
334 1216, 1220, 1221, 1243, 1244, 1301, 1601, 2237, 2355, 2637, 2774, 3932, | |
335 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 4263, 4282, 4306, 4311, | |
336 4312, 4313, 4314, 4337, 4339, 4357, 4358, 4363, 4383, 4395, 4408, 4433, | |
337 4443, 4445, 4446, 5167, 5234, 5235, 5252, 5318, 5424, 5644, 6987, 7054, | |
338 7055, 7071] | |
339 >>> | |
340 >>> p = psutil.Process(7055) | |
341 >>> p | |
342 psutil.Process(pid=7055, name='python3', status='running', started='09:04:44') | |
343 >>> p.name() | |
344 'python' | |
345 >>> p.exe() | |
346 '/usr/bin/python' | |
347 >>> p.cwd() | |
348 '/home/giampaolo' | |
349 >>> p.cmdline() | |
350 ['/usr/bin/python', 'main.py'] | |
351 >>> | |
352 >>> p.pid | |
353 7055 | |
354 >>> p.ppid() | |
355 7054 | |
356 >>> p.children(recursive=True) | |
357 [psutil.Process(pid=29835, name='python3', status='sleeping', started='11:45:38'), | |
358 psutil.Process(pid=29836, name='python3', status='waking', started='11:43:39')] | |
359 >>> | |
360 >>> p.parent() | |
361 psutil.Process(pid=4699, name='bash', status='sleeping', started='09:06:44') | |
362 >>> p.parents() | |
363 [psutil.Process(pid=4699, name='bash', started='09:06:44'), | |
364 psutil.Process(pid=4689, name='gnome-terminal-server', status='sleeping', started='0:06:44'), | |
365 psutil.Process(pid=1, name='systemd', status='sleeping', started='05:56:55')] | |
366 >>> | |
367 >>> p.status() | |
368 'running' | |
369 >>> p.username() | |
370 'giampaolo' | |
371 >>> p.create_time() | |
372 1267551141.5019531 | |
373 >>> p.terminal() | |
374 '/dev/pts/0' | |
375 >>> | |
376 >>> p.uids() | |
377 puids(real=1000, effective=1000, saved=1000) | |
378 >>> p.gids() | |
379 pgids(real=1000, effective=1000, saved=1000) | |
380 >>> | |
381 >>> p.cpu_times() | |
382 pcputimes(user=1.02, system=0.31, children_user=0.32, children_system=0.1, iowait=0.0) | |
383 >>> p.cpu_percent(interval=1.0) | |
384 12.1 | |
385 >>> p.cpu_affinity() | |
386 [0, 1, 2, 3] | |
387 >>> p.cpu_affinity([0, 1]) # set | |
388 >>> p.cpu_num() | |
389 1 | |
390 >>> | |
391 >>> p.memory_info() | |
392 pmem(rss=10915840, vms=67608576, shared=3313664, text=2310144, lib=0, data=7262208, dirty=0) | |
393 >>> p.memory_full_info() # "real" USS memory usage (Linux, macOS, Win only) | |
394 pfullmem(rss=10199040, vms=52133888, shared=3887104, text=2867200, lib=0, data=5967872, dirty=0, uss=6545408, pss=6872064, swap=0) | |
395 >>> p.memory_percent() | |
396 0.7823 | |
397 >>> p.memory_maps() | |
398 [pmmap_grouped(path='/lib/x8664-linux-gnu/libutil-2.15.so', rss=32768, size=2125824, pss=32768, shared_clean=0, shared_dirty=0, private_clean=20480, private_dirty=12288, referenced=32768, anonymous=12288, swap=0), | |
399 pmmap_grouped(path='/lib/x8664-linux-gnu/libc-2.15.so', rss=3821568, size=3842048, pss=3821568, shared_clean=0, shared_dirty=0, private_clean=0, private_dirty=3821568, referenced=3575808, anonymous=3821568, swap=0), | |
400 pmmap_grouped(path='[heap]', rss=32768, size=139264, pss=32768, shared_clean=0, shared_dirty=0, private_clean=0, private_dirty=32768, referenced=32768, anonymous=32768, swap=0), | |
401 pmmap_grouped(path='[stack]', rss=2465792, size=2494464, pss=2465792, shared_clean=0, shared_dirty=0, private_clean=0, private_dirty=2465792, referenced=2277376, anonymous=2465792, swap=0), | |
402 ...] | |
403 >>> | |
404 >>> p.io_counters() | |
405 pio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632, read_chars=456232, write_chars=517543) | |
406 >>> | |
407 >>> p.open_files() | |
408 [popenfile(path='/home/giampaolo/monit.py', fd=3, position=0, mode='r', flags=32768), | |
409 popenfile(path='/var/log/monit.log', fd=4, position=235542, mode='a', flags=33793)] | |
410 >>> | |
411 >>> p.connections(kind='tcp') | |
412 [pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED'), | |
413 pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=43761), raddr=addr(ip='72.14.234.100', port=80), status='CLOSING')] | |
414 >>> | |
415 >>> p.num_threads() | |
416 4 | |
417 >>> p.num_fds() | |
418 8 | |
419 >>> p.threads() | |
420 [pthread(id=5234, user_time=22.5, system_time=9.2891), | |
421 pthread(id=5237, user_time=0.0707, system_time=1.1)] | |
422 >>> | |
423 >>> p.num_ctx_switches() | |
424 pctxsw(voluntary=78, involuntary=19) | |
425 >>> | |
426 >>> p.nice() | |
427 0 | |
428 >>> p.nice(10) # set | |
429 >>> | |
430 >>> p.ionice(psutil.IOPRIO_CLASS_IDLE) # IO priority (Win and Linux only) | |
431 >>> p.ionice() | |
432 pionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0) | |
433 >>> | |
434 >>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5)) # set resource limits (Linux only) | |
435 >>> p.rlimit(psutil.RLIMIT_NOFILE) | |
436 (5, 5) | |
437 >>> | |
438 >>> p.environ() | |
439 {'LC_PAPER': 'it_IT.UTF-8', 'SHELL': '/bin/bash', 'GREP_OPTIONS': '--color=auto', | |
440 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', | |
441 ...} | |
442 >>> | |
443 >>> p.as_dict() | |
444 {'status': 'running', 'num_ctx_switches': pctxsw(voluntary=63, involuntary=1), 'pid': 5457, ...} | |
445 >>> p.is_running() | |
446 True | |
447 >>> p.suspend() | |
448 >>> p.resume() | |
449 >>> | |
450 >>> p.terminate() | |
451 >>> p.kill() | |
452 >>> p.wait(timeout=3) | |
453 <Exitcode.EX_OK: 0> | |
454 >>> | |
455 >>> psutil.test() | |
456 USER PID %CPU %MEM VSZ RSS TTY START TIME COMMAND | |
457 root 1 0.0 0.0 24584 2240 Jun17 00:00 init | |
458 root 2 0.0 0.0 0 0 Jun17 00:00 kthreadd | |
459 ... | |
460 giampaolo 31475 0.0 0.0 20760 3024 /dev/pts/0 Jun19 00:00 python2.4 | |
461 giampaolo 31721 0.0 2.2 773060 181896 00:04 10:30 chrome | |
462 root 31763 0.0 0.0 0 0 00:05 00:00 kworker/0:1 | |
463 >>> | |
464 | |
465 Further process APIs | |
466 -------------------- | |
467 | |
468 .. code-block:: python | |
469 | |
470 >>> import psutil | |
471 >>> for proc in psutil.process_iter(['pid', 'name']): | |
472 ... print(proc.info) | |
473 ... | |
474 {'pid': 1, 'name': 'systemd'} | |
475 {'pid': 2, 'name': 'kthreadd'} | |
476 {'pid': 3, 'name': 'ksoftirqd/0'} | |
477 ... | |
478 >>> | |
479 >>> psutil.pid_exists(3) | |
480 True | |
481 >>> | |
482 >>> def on_terminate(proc): | |
483 ... print("process {} terminated".format(proc)) | |
484 ... | |
485 >>> # waits for multiple processes to terminate | |
486 >>> gone, alive = psutil.wait_procs(procs_list, timeout=3, callback=on_terminate) | |
487 >>> | |
488 | |
489 Popen wrapper: | |
490 | |
491 .. code-block:: python | |
492 | |
493 >>> import psutil | |
494 >>> from subprocess import PIPE | |
495 >>> p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout=PIPE) | |
496 >>> p.name() | |
497 'python' | |
498 >>> p.username() | |
499 'giampaolo' | |
500 >>> p.communicate() | |
501 ('hello\n', None) | |
502 >>> p.wait(timeout=2) | |
503 0 | |
504 >>> | |
505 | |
506 Windows services | |
507 ---------------- | |
508 | |
509 .. code-block:: python | |
510 | |
511 >>> list(psutil.win_service_iter()) | |
512 [<WindowsService(name='AeLookupSvc', display_name='Application Experience') at 38850096>, | |
513 <WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 38850128>, | |
514 <WindowsService(name='APNMCP', display_name='Ask Update Service') at 38850160>, | |
515 <WindowsService(name='AppIDSvc', display_name='Application Identity') at 38850192>, | |
516 ...] | |
517 >>> s = psutil.win_service_get('alg') | |
518 >>> s.as_dict() | |
519 {'binpath': 'C:\\Windows\\System32\\alg.exe', | |
520 'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing', | |
521 'display_name': 'Application Layer Gateway Service', | |
522 'name': 'alg', | |
523 'pid': None, | |
524 'start_type': 'manual', | |
525 'status': 'stopped', | |
526 'username': 'NT AUTHORITY\\LocalService'} | |
527 | |
528 Projects using psutil | |
529 ===================== | |
530 | |
531 Here's some I find particularly interesting: | |
532 | |
533 - https://github.com/google/grr | |
534 - https://github.com/facebook/osquery/ | |
535 - https://github.com/nicolargo/glances | |
536 - https://github.com/Jahaja/psdash | |
537 - https://github.com/ajenti/ajenti | |
538 - https://github.com/home-assistant/home-assistant/ | |
539 | |
540 Portings | |
541 ======== | |
542 | |
543 - Go: https://github.com/shirou/gopsutil | |
544 - C: https://github.com/hamon-in/cpslib | |
545 - Rust: https://github.com/rust-psutil/rust-psutil | |
546 - Nim: https://github.com/johnscillieri/psutil-nim | |
547 | |
548 Security | |
549 ======== | |
550 | |
551 To report a security vulnerability, please use the `Tidelift security | |
552 contact`_. Tidelift will coordinate the fix and disclosure. | |
553 | |
554 .. _`Giampaolo Rodola`: https://gmpy.dev/about | |
555 .. _`donation`: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A9ZS7PKKRM3S8 | |
556 .. _Tidelift security contact: https://tidelift.com/security | |
557 .. _Tidelift Subscription: https://tidelift.com/subscription/pkg/pypi-psutil?utm_source=pypi-psutil&utm_medium=referral&utm_campaign=readme | |
558 | |
559 | |
560 |