| |downloads| |stars| |forks| |contributors| |coverage|
| |version| |packages| |license|
| |github-actions-wheels| |github-actions-bsd| |doc| |twitter| |tidelift|
.. |downloads| image:: https://img.shields.io/pypi/dm/psutil.svg
:target: https://clickpy.clickhouse.com/dashboard/psutil
:alt: Downloads
.. |stars| image:: https://img.shields.io/github/stars/giampaolo/psutil.svg
:target: https://github.com/giampaolo/psutil/stargazers
:alt: Github stars
.. |forks| image:: https://img.shields.io/github/forks/giampaolo/psutil.svg
:target: https://github.com/giampaolo/psutil/network/members
:alt: Github forks
.. |contributors| image:: https://img.shields.io/github/contributors/giampaolo/psutil.svg
:target: https://github.com/giampaolo/psutil/graphs/contributors
:alt: Contributors
.. |github-actions-wheels| image:: https://img.shields.io/github/actions/workflow/status/giampaolo/psutil/.github/workflows/build.yml.svg?label=Linux%2C%20macOS%2C%20Windows
:target: https://github.com/giampaolo/psutil/actions?query=workflow%3Abuild
:alt: Linux, macOS, Windows
.. |github-actions-bsd| image:: https://img.shields.io/github/actions/workflow/status/giampaolo/psutil/.github/workflows/bsd.yml.svg?label=FreeBSD,%20NetBSD,%20OpenBSD
:target: https://github.com/giampaolo/psutil/actions?query=workflow%3Absd-tests
:alt: FreeBSD, NetBSD, OpenBSD
.. |coverage| image:: https://coveralls.io/repos/github/giampaolo/psutil/badge.svg?branch=master
:target: https://coveralls.io/github/giampaolo/psutil?branch=master
:alt: Test coverage (coverall.io)
.. |doc| image:: https://readthedocs.org/projects/psutil/badge/?version=latest
:target: https://psutil.readthedocs.io/en/latest/
:alt: Documentation Status
.. |version| image:: https://img.shields.io/pypi/v/psutil.svg?label=pypi
:target: https://pypi.org/project/psutil
:alt: Latest version
.. |packages| image:: https://repology.org/badge/tiny-repos/python:psutil.svg
:target: https://repology.org/metapackage/python:psutil/versions
:alt: Binary packages
.. |license| image:: https://img.shields.io/pypi/l/psutil.svg
:target: https://github.com/giampaolo/psutil/blob/master/LICENSE
:alt: License
.. |twitter| image:: https://img.shields.io/twitter/follow/grodola.svg?label=follow&style=flat&logo=twitter&logoColor=4FADFF
:target: https://twitter.com/grodola
:alt: Twitter Follow
.. |tidelift| image:: https://tidelift.com/badges/github/giampaolo/psutil?style=flat
:target: https://tidelift.com/subscription/pkg/pypi-psutil?utm_source=pypi-psutil&utm_medium=referral&utm_campaign=readme
:alt: Tidelift
-----
Quick links
===========
- `Home page <https://github.com/giampaolo/psutil>`_
- `Install <https://github.com/giampaolo/psutil/blob/master/INSTALL.rst>`_
- `Documentation <http://psutil.readthedocs.io>`_
- `Download <https://pypi.org/project/psutil/#files>`_
- `Forum <http://groups.google.com/group/psutil/topics>`_
- `StackOverflow <https://stackoverflow.com/questions/tagged/psutil>`_
- `Blog <https://gmpy.dev/tags/psutil>`_
- `What's new <https://github.com/giampaolo/psutil/blob/master/HISTORY.rst>`_
Summary
=======
psutil (process and system utilities) is a cross-platform library for
retrieving information on **running processes** and **system utilization**
(CPU, memory, disks, network, sensors) in Python.
It is useful mainly for **system monitoring**, **profiling and limiting process
resources** and **management of running processes**.
It implements many functionalities offered by classic UNIX command line tools
such as *ps, top, iotop, lsof, netstat, ifconfig, free* and others.
psutil currently supports the following platforms:
- **Linux**
- **Windows**
- **macOS**
- **FreeBSD, OpenBSD**, **NetBSD**
- **Sun Solaris**
- **AIX**
Supported Python versions are cPython 3.6+ and `PyPy <https://pypy.org/>`__.
Latest psutil version supporting Python 2.7 is
`psutil 6.1.1 <https://pypi.org/project/psutil/6.1.1/>`__.
Funding
=======
While psutil is free software and will always be, the project would benefit
immensely from some funding.
Keeping up with bug reports and maintenance has become hardly sustainable for
me alone in terms of time.
If you're a company that's making significant use of psutil you can consider
becoming a sponsor via `GitHub Sponsors <https://github.com/sponsors/giampaolo>`__,
`Open Collective <https://opencollective.com/psutil>`__ or
`PayPal <https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A9ZS7PKKRM3S8>`__
and have your logo displayed in here and psutil `doc <https://psutil.readthedocs.io>`__.
Sponsors
========
.. image:: https://github.com/giampaolo/psutil/raw/master/docs/_static/tidelift-logo.png
:width: 200
:alt: Alternative text
`Add your logo <https://github.com/sponsors/giampaolo>`__.
Example usages
==============
This represents pretty much the whole psutil API.
CPU
---
.. code-block:: python
>>> import psutil
>>>
>>> psutil.cpu_times()
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, guest_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, 3.7, 9.2]
[7.0, 8.5, 2.4, 2.1]
[1.2, 9.0, 9.9, 7.2]
>>>
>>> for x in range(3):
... psutil.cpu_times_percent(interval=1, percpu=False)
...
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)
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)
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)
>>>
>>> psutil.cpu_count()
4
>>> psutil.cpu_count(logical=False)
2
>>>
>>> psutil.cpu_stats()
scpustats(ctx_switches=20455687, interrupts=6598984, soft_interrupts=2134212, syscalls=0)
>>>
>>> psutil.cpu_freq()
scpufreq(current=931.42925, min=800.0, max=3500.0)
>>>
>>> psutil.getloadavg() # also on Windows (emulated)
(3.14, 3.89, 4.67)
Memory
------
.. code-block:: python
>>> psutil.virtual_memory()
svmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304)
>>> psutil.swap_memory()
sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)
>>>
Disks
-----
.. code-block:: python
>>> psutil.disk_partitions()
[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),
sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext', opts='rw')]
>>>
>>> psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
>>>
>>> psutil.disk_io_counters(perdisk=False)
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)
>>>
Network
-------
.. code-block:: python
>>> psutil.net_io_counters(pernic=True)
{'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0),
'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}
>>>
>>> psutil.net_connections(kind='tcp')
[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),
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),
...]
>>>
>>> psutil.net_if_addrs()
{'lo': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),
snicaddr(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
snicaddr(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],
'wlan0': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),
snicaddr(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),
snicaddr(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}
>>>
>>> psutil.net_if_stats()
{'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536, flags='up,loopback,running'),
'wlan0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500, flags='up,broadcast,running,multicast')}
>>>
Sensors
-------
.. code-block:: python
>>> import psutil
>>> psutil.sensors_temperatures()
{'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)],
'asus': [shwtemp(label='', current=47.0, high=None, critical=None)],
'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0),
shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0)]}
>>>
>>> psutil.sensors_fans()
{'asus': [sfan(label='cpu_fan', current=3200)]}
>>>
>>> psutil.sensors_battery()
sbattery(percent=93, secsleft=16628, power_plugged=False)
>>>
Other system info
-----------------
.. code-block:: python
>>> import psutil
>>> psutil.users()
[suser(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0, pid=1352),
suser(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0, pid=1788)]
>>>
>>> psutil.boot_time()
1365519115.0
>>>
Process management
------------------
.. code-block:: python
>>> import psutil
>>> psutil.pids()
[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
psutil.Process(pid=7055, name='python3', status='running', started='09:04:44')
>>> p.pid
7055
>>> p.name()
'python3'
>>> p.exe()
'/usr/bin/python3'
>>> p.cwd()
'/home/giampaolo'
>>> p.cmdline()
['/usr/bin/python3', 'main.py']
>>>
>>> p.ppid()
7054
>>> p.parent()
psutil.Process(pid=4699, name='bash', status='sleeping', started='09:06:44')
>>> p.parents()
[psutil.Process(pid=4699, name='bash', started='09:06:44'),
psutil.Process(pid=4689, name='gnome-terminal-server', status='sleeping', started='0:06:44'),
psutil.Process(pid=1, name='systemd', status='sleeping', started='05:56:55')]
>>> p.children(recursive=True)
[psutil.Process(pid=29835, name='python3', status='sleeping', started='11:45:38'),
psutil.Process(pid=29836, name='python3', status='waking', started='11:43:39')]
>>>
>>> p.status()
'running'
>>> p.create_time()
1267551141.5019531
>>> p.terminal()
'/dev/pts/0'
>>>
>>> p.username()
'giampaolo'
>>> p.uids()
puids(real=1000, effective=1000, saved=1000)
>>> p.gids()
pgids(real=1000, effective=1000, saved=1000)
>>>
>>> p.cpu_times()
pcputimes(user=1.02, system=0.31, children_user=0.32, children_system=0.1, iowait=0.0)
>>> p.cpu_percent(interval=1.0)
12.1
>>> p.cpu_affinity()
[0, 1, 2, 3]
>>> p.cpu_affinity([0, 1]) # set
>>> p.cpu_num()
1
>>>
>>> p.memory_info()
pmem(rss=10915840, vms=67608576, shared=3313664, text=2310144, lib=0, data=7262208, dirty=0)
>>> p.memory_full_info() # "real" USS memory usage (Linux, macOS, Win only)
pfullmem(rss=10199040, vms=52133888, shared=3887104, text=2867200, lib=0, data=5967872, dirty=0, uss=6545408, pss=6872064, swap=0)
>>> p.memory_percent()
0.7823
>>> p.memory_maps()
[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),
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),
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),
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),
...]
>>>
>>> p.io_counters()
pio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632, read_chars=456232, write_chars=517543)
>>>
>>> p.open_files()
[popenfile(path='/home/giampaolo/monit.py', fd=3, position=0, mode='r', flags=32768),
popenfile(path='/var/log/monit.log', fd=4, position=235542, mode='a', flags=33793)]
>>>
>>> p.net_connections(kind='tcp')
[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'),
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')]
>>>
>>> p.threads()
[pthread(id=5234, user_time=22.5, system_time=9.2891),
pthread(id=5237, user_time=0.0707, system_time=1.1)]
>>>
>>> p.num_threads()
4
>>> p.num_fds()
8
>>> p.num_ctx_switches()
pctxsw(voluntary=78, involuntary=19)
>>>
>>> p.nice()
0
>>> p.nice(10) # set
>>>
>>> p.ionice(psutil.IOPRIO_CLASS_IDLE) # IO priority (Win and Linux only)
>>> p.ionice()
pionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0)
>>>
>>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5)) # set resource limits (Linux only)
>>> p.rlimit(psutil.RLIMIT_NOFILE)
(5, 5)
>>>
>>> p.environ()
{'LC_PAPER': 'it_IT.UTF-8', 'SHELL': '/bin/bash', 'GREP_OPTIONS': '--color=auto',
'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg',
...}
>>>
>>> p.as_dict()
{'status': 'running', 'num_ctx_switches': pctxsw(voluntary=63, involuntary=1), 'pid': 5457, ...}
>>> p.is_running()
True
>>> p.suspend()
>>> p.resume()
>>>
>>> p.terminate()
>>> p.kill()
>>> p.wait(timeout=3)
<Exitcode.EX_OK: 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
...
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
>>>
Further process APIs
--------------------
.. code-block:: python
>>> import psutil
>>> for proc in psutil.process_iter(['pid', 'name']):
... print(proc.info)
...
{'pid': 1, 'name': 'systemd'}
{'pid': 2, 'name': 'kthreadd'}
{'pid': 3, 'name': 'ksoftirqd/0'}
...
>>>
>>> psutil.pid_exists(3)
True
>>>
>>> def on_terminate(proc):
... print("process {} terminated".format(proc))
...
>>> # waits for multiple processes to terminate
>>> gone, alive = psutil.wait_procs(procs_list, timeout=3, callback=on_terminate)
>>>
Windows services
----------------
.. code-block:: python
>>> list(psutil.win_service_iter())
[<WindowsService(name='AeLookupSvc', display_name='Application Experience') at 38850096>,
<WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 38850128>,
<WindowsService(name='APNMCP', display_name='Ask Update Service') at 38850160>,
<WindowsService(name='AppIDSvc', display_name='Application Identity') at 38850192>,
...]
>>> s = psutil.win_service_get('alg')
>>> s.as_dict()
{'binpath': 'C:\\Windows\\System32\\alg.exe',
'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing',
'display_name': 'Application Layer Gateway Service',
'name': 'alg',
'pid': None,
'start_type': 'manual',
'status': 'stopped',
'username': 'NT AUTHORITY\\LocalService'}
Projects using psutil
=====================
Here's some I find particularly interesting:
- https://github.com/google/grr
- https://github.com/facebook/osquery/
- https://github.com/nicolargo/glances
- https://github.com/aristocratos/bpytop
- https://github.com/Jahaja/psdash
- https://github.com/ajenti/ajenti
- https://github.com/home-assistant/home-assistant/
Portings
========
- Go: https://github.com/shirou/gopsutil
- C: https://github.com/hamon-in/cpslib
- Rust: https://github.com/rust-psutil/rust-psutil
- Nim: https://github.com/johnscillieri/psutil-nim
Raw data
{
"_id": null,
"home_page": "https://github.com/giampaolo/psutil",
"name": "psutil",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"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",
"author": "Giampaolo Rodola",
"author_email": "g.rodola@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz",
"platform": "Platform Independent",
"description": "| |downloads| |stars| |forks| |contributors| |coverage|\n| |version| |packages| |license|\n| |github-actions-wheels| |github-actions-bsd| |doc| |twitter| |tidelift|\n\n.. |downloads| image:: https://img.shields.io/pypi/dm/psutil.svg\n :target: https://clickpy.clickhouse.com/dashboard/psutil\n :alt: Downloads\n\n.. |stars| image:: https://img.shields.io/github/stars/giampaolo/psutil.svg\n :target: https://github.com/giampaolo/psutil/stargazers\n :alt: Github stars\n\n.. |forks| image:: https://img.shields.io/github/forks/giampaolo/psutil.svg\n :target: https://github.com/giampaolo/psutil/network/members\n :alt: Github forks\n\n.. |contributors| image:: https://img.shields.io/github/contributors/giampaolo/psutil.svg\n :target: https://github.com/giampaolo/psutil/graphs/contributors\n :alt: Contributors\n\n.. |github-actions-wheels| image:: https://img.shields.io/github/actions/workflow/status/giampaolo/psutil/.github/workflows/build.yml.svg?label=Linux%2C%20macOS%2C%20Windows\n :target: https://github.com/giampaolo/psutil/actions?query=workflow%3Abuild\n :alt: Linux, macOS, Windows\n\n.. |github-actions-bsd| image:: https://img.shields.io/github/actions/workflow/status/giampaolo/psutil/.github/workflows/bsd.yml.svg?label=FreeBSD,%20NetBSD,%20OpenBSD\n :target: https://github.com/giampaolo/psutil/actions?query=workflow%3Absd-tests\n :alt: FreeBSD, NetBSD, OpenBSD\n\n.. |coverage| image:: https://coveralls.io/repos/github/giampaolo/psutil/badge.svg?branch=master\n :target: https://coveralls.io/github/giampaolo/psutil?branch=master\n :alt: Test coverage (coverall.io)\n\n.. |doc| image:: https://readthedocs.org/projects/psutil/badge/?version=latest\n :target: https://psutil.readthedocs.io/en/latest/\n :alt: Documentation Status\n\n.. |version| image:: https://img.shields.io/pypi/v/psutil.svg?label=pypi\n :target: https://pypi.org/project/psutil\n :alt: Latest version\n\n.. |packages| image:: https://repology.org/badge/tiny-repos/python:psutil.svg\n :target: https://repology.org/metapackage/python:psutil/versions\n :alt: Binary packages\n\n.. |license| image:: https://img.shields.io/pypi/l/psutil.svg\n :target: https://github.com/giampaolo/psutil/blob/master/LICENSE\n :alt: License\n\n.. |twitter| image:: https://img.shields.io/twitter/follow/grodola.svg?label=follow&style=flat&logo=twitter&logoColor=4FADFF\n :target: https://twitter.com/grodola\n :alt: Twitter Follow\n\n.. |tidelift| image:: https://tidelift.com/badges/github/giampaolo/psutil?style=flat\n :target: https://tidelift.com/subscription/pkg/pypi-psutil?utm_source=pypi-psutil&utm_medium=referral&utm_campaign=readme\n :alt: Tidelift\n\n-----\n\nQuick links\n===========\n\n- `Home page <https://github.com/giampaolo/psutil>`_\n- `Install <https://github.com/giampaolo/psutil/blob/master/INSTALL.rst>`_\n- `Documentation <http://psutil.readthedocs.io>`_\n- `Download <https://pypi.org/project/psutil/#files>`_\n- `Forum <http://groups.google.com/group/psutil/topics>`_\n- `StackOverflow <https://stackoverflow.com/questions/tagged/psutil>`_\n- `Blog <https://gmpy.dev/tags/psutil>`_\n- `What's new <https://github.com/giampaolo/psutil/blob/master/HISTORY.rst>`_\n\n\nSummary\n=======\n\npsutil (process and system utilities) is a cross-platform library for\nretrieving information on **running processes** and **system utilization**\n(CPU, memory, disks, network, sensors) in Python.\nIt is useful mainly for **system monitoring**, **profiling and limiting process\nresources** and **management of running processes**.\nIt implements many functionalities offered by classic UNIX command line tools\nsuch as *ps, top, iotop, lsof, netstat, ifconfig, free* and others.\npsutil currently supports the following platforms:\n\n- **Linux**\n- **Windows**\n- **macOS**\n- **FreeBSD, OpenBSD**, **NetBSD**\n- **Sun Solaris**\n- **AIX**\n\nSupported Python versions are cPython 3.6+ and `PyPy <https://pypy.org/>`__.\nLatest psutil version supporting Python 2.7 is\n`psutil 6.1.1 <https://pypi.org/project/psutil/6.1.1/>`__.\n\nFunding\n=======\n\nWhile psutil is free software and will always be, the project would benefit\nimmensely from some funding.\nKeeping up with bug reports and maintenance has become hardly sustainable for\nme alone in terms of time.\nIf you're a company that's making significant use of psutil you can consider\nbecoming a sponsor via `GitHub Sponsors <https://github.com/sponsors/giampaolo>`__,\n`Open Collective <https://opencollective.com/psutil>`__ or\n`PayPal <https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A9ZS7PKKRM3S8>`__\nand have your logo displayed in here and psutil `doc <https://psutil.readthedocs.io>`__.\n\nSponsors\n========\n\n.. image:: https://github.com/giampaolo/psutil/raw/master/docs/_static/tidelift-logo.png\n :width: 200\n :alt: Alternative text\n\n`Add your logo <https://github.com/sponsors/giampaolo>`__.\n\nExample usages\n==============\n\nThis represents pretty much the whole psutil API.\n\nCPU\n---\n\n.. code-block:: python\n\n >>> import psutil\n >>>\n >>> psutil.cpu_times()\n 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, guest_nice=0.0)\n >>>\n >>> for x in range(3):\n ... psutil.cpu_percent(interval=1)\n ...\n 4.0\n 5.9\n 3.8\n >>>\n >>> for x in range(3):\n ... psutil.cpu_percent(interval=1, percpu=True)\n ...\n [4.0, 6.9, 3.7, 9.2]\n [7.0, 8.5, 2.4, 2.1]\n [1.2, 9.0, 9.9, 7.2]\n >>>\n >>> for x in range(3):\n ... psutil.cpu_times_percent(interval=1, percpu=False)\n ...\n 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)\n 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)\n 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)\n >>>\n >>> psutil.cpu_count()\n 4\n >>> psutil.cpu_count(logical=False)\n 2\n >>>\n >>> psutil.cpu_stats()\n scpustats(ctx_switches=20455687, interrupts=6598984, soft_interrupts=2134212, syscalls=0)\n >>>\n >>> psutil.cpu_freq()\n scpufreq(current=931.42925, min=800.0, max=3500.0)\n >>>\n >>> psutil.getloadavg() # also on Windows (emulated)\n (3.14, 3.89, 4.67)\n\nMemory\n------\n\n.. code-block:: python\n\n >>> psutil.virtual_memory()\n svmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304)\n >>> psutil.swap_memory()\n sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)\n >>>\n\nDisks\n-----\n\n.. code-block:: python\n\n >>> psutil.disk_partitions()\n [sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),\n sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext', opts='rw')]\n >>>\n >>> psutil.disk_usage('/')\n sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)\n >>>\n >>> psutil.disk_io_counters(perdisk=False)\n 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)\n >>>\n\nNetwork\n-------\n\n.. code-block:: python\n\n >>> psutil.net_io_counters(pernic=True)\n {'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0),\n 'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}\n >>>\n >>> psutil.net_connections(kind='tcp')\n [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),\n 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),\n ...]\n >>>\n >>> psutil.net_if_addrs()\n {'lo': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),\n snicaddr(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),\n snicaddr(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],\n 'wlan0': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),\n snicaddr(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),\n snicaddr(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}\n >>>\n >>> psutil.net_if_stats()\n {'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536, flags='up,loopback,running'),\n 'wlan0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500, flags='up,broadcast,running,multicast')}\n >>>\n\nSensors\n-------\n\n.. code-block:: python\n\n >>> import psutil\n >>> psutil.sensors_temperatures()\n {'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)],\n 'asus': [shwtemp(label='', current=47.0, high=None, critical=None)],\n 'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0),\n shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0)]}\n >>>\n >>> psutil.sensors_fans()\n {'asus': [sfan(label='cpu_fan', current=3200)]}\n >>>\n >>> psutil.sensors_battery()\n sbattery(percent=93, secsleft=16628, power_plugged=False)\n >>>\n\nOther system info\n-----------------\n\n.. code-block:: python\n\n >>> import psutil\n >>> psutil.users()\n [suser(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0, pid=1352),\n suser(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0, pid=1788)]\n >>>\n >>> psutil.boot_time()\n 1365519115.0\n >>>\n\nProcess management\n------------------\n\n.. code-block:: python\n\n >>> import psutil\n >>> psutil.pids()\n [1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224, 268, 1215,\n 1216, 1220, 1221, 1243, 1244, 1301, 1601, 2237, 2355, 2637, 2774, 3932,\n 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 4263, 4282, 4306, 4311,\n 4312, 4313, 4314, 4337, 4339, 4357, 4358, 4363, 4383, 4395, 4408, 4433,\n 4443, 4445, 4446, 5167, 5234, 5235, 5252, 5318, 5424, 5644, 6987, 7054,\n 7055, 7071]\n >>>\n >>> p = psutil.Process(7055)\n >>> p\n psutil.Process(pid=7055, name='python3', status='running', started='09:04:44')\n >>> p.pid\n 7055\n >>> p.name()\n 'python3'\n >>> p.exe()\n '/usr/bin/python3'\n >>> p.cwd()\n '/home/giampaolo'\n >>> p.cmdline()\n ['/usr/bin/python3', 'main.py']\n >>>\n >>> p.ppid()\n 7054\n >>> p.parent()\n psutil.Process(pid=4699, name='bash', status='sleeping', started='09:06:44')\n >>> p.parents()\n [psutil.Process(pid=4699, name='bash', started='09:06:44'),\n psutil.Process(pid=4689, name='gnome-terminal-server', status='sleeping', started='0:06:44'),\n psutil.Process(pid=1, name='systemd', status='sleeping', started='05:56:55')]\n >>> p.children(recursive=True)\n [psutil.Process(pid=29835, name='python3', status='sleeping', started='11:45:38'),\n psutil.Process(pid=29836, name='python3', status='waking', started='11:43:39')]\n >>>\n >>> p.status()\n 'running'\n >>> p.create_time()\n 1267551141.5019531\n >>> p.terminal()\n '/dev/pts/0'\n >>>\n >>> p.username()\n 'giampaolo'\n >>> p.uids()\n puids(real=1000, effective=1000, saved=1000)\n >>> p.gids()\n pgids(real=1000, effective=1000, saved=1000)\n >>>\n >>> p.cpu_times()\n pcputimes(user=1.02, system=0.31, children_user=0.32, children_system=0.1, iowait=0.0)\n >>> p.cpu_percent(interval=1.0)\n 12.1\n >>> p.cpu_affinity()\n [0, 1, 2, 3]\n >>> p.cpu_affinity([0, 1]) # set\n >>> p.cpu_num()\n 1\n >>>\n >>> p.memory_info()\n pmem(rss=10915840, vms=67608576, shared=3313664, text=2310144, lib=0, data=7262208, dirty=0)\n >>> p.memory_full_info() # \"real\" USS memory usage (Linux, macOS, Win only)\n pfullmem(rss=10199040, vms=52133888, shared=3887104, text=2867200, lib=0, data=5967872, dirty=0, uss=6545408, pss=6872064, swap=0)\n >>> p.memory_percent()\n 0.7823\n >>> p.memory_maps()\n [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),\n 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),\n 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),\n 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),\n ...]\n >>>\n >>> p.io_counters()\n pio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632, read_chars=456232, write_chars=517543)\n >>>\n >>> p.open_files()\n [popenfile(path='/home/giampaolo/monit.py', fd=3, position=0, mode='r', flags=32768),\n popenfile(path='/var/log/monit.log', fd=4, position=235542, mode='a', flags=33793)]\n >>>\n >>> p.net_connections(kind='tcp')\n [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'),\n 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')]\n >>>\n >>> p.threads()\n [pthread(id=5234, user_time=22.5, system_time=9.2891),\n pthread(id=5237, user_time=0.0707, system_time=1.1)]\n >>>\n >>> p.num_threads()\n 4\n >>> p.num_fds()\n 8\n >>> p.num_ctx_switches()\n pctxsw(voluntary=78, involuntary=19)\n >>>\n >>> p.nice()\n 0\n >>> p.nice(10) # set\n >>>\n >>> p.ionice(psutil.IOPRIO_CLASS_IDLE) # IO priority (Win and Linux only)\n >>> p.ionice()\n pionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0)\n >>>\n >>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5)) # set resource limits (Linux only)\n >>> p.rlimit(psutil.RLIMIT_NOFILE)\n (5, 5)\n >>>\n >>> p.environ()\n {'LC_PAPER': 'it_IT.UTF-8', 'SHELL': '/bin/bash', 'GREP_OPTIONS': '--color=auto',\n 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg',\n ...}\n >>>\n >>> p.as_dict()\n {'status': 'running', 'num_ctx_switches': pctxsw(voluntary=63, involuntary=1), 'pid': 5457, ...}\n >>> p.is_running()\n True\n >>> p.suspend()\n >>> p.resume()\n >>>\n >>> p.terminate()\n >>> p.kill()\n >>> p.wait(timeout=3)\n <Exitcode.EX_OK: 0>\n >>>\n >>> psutil.test()\n USER PID %CPU %MEM VSZ RSS TTY START TIME COMMAND\n root 1 0.0 0.0 24584 2240 Jun17 00:00 init\n root 2 0.0 0.0 0 0 Jun17 00:00 kthreadd\n ...\n giampaolo 31475 0.0 0.0 20760 3024 /dev/pts/0 Jun19 00:00 python2.4\n giampaolo 31721 0.0 2.2 773060 181896 00:04 10:30 chrome\n root 31763 0.0 0.0 0 0 00:05 00:00 kworker/0:1\n >>>\n\nFurther process APIs\n--------------------\n\n.. code-block:: python\n\n >>> import psutil\n >>> for proc in psutil.process_iter(['pid', 'name']):\n ... print(proc.info)\n ...\n {'pid': 1, 'name': 'systemd'}\n {'pid': 2, 'name': 'kthreadd'}\n {'pid': 3, 'name': 'ksoftirqd/0'}\n ...\n >>>\n >>> psutil.pid_exists(3)\n True\n >>>\n >>> def on_terminate(proc):\n ... print(\"process {} terminated\".format(proc))\n ...\n >>> # waits for multiple processes to terminate\n >>> gone, alive = psutil.wait_procs(procs_list, timeout=3, callback=on_terminate)\n >>>\n\nWindows services\n----------------\n\n.. code-block:: python\n\n >>> list(psutil.win_service_iter())\n [<WindowsService(name='AeLookupSvc', display_name='Application Experience') at 38850096>,\n <WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 38850128>,\n <WindowsService(name='APNMCP', display_name='Ask Update Service') at 38850160>,\n <WindowsService(name='AppIDSvc', display_name='Application Identity') at 38850192>,\n ...]\n >>> s = psutil.win_service_get('alg')\n >>> s.as_dict()\n {'binpath': 'C:\\\\Windows\\\\System32\\\\alg.exe',\n 'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing',\n 'display_name': 'Application Layer Gateway Service',\n 'name': 'alg',\n 'pid': None,\n 'start_type': 'manual',\n 'status': 'stopped',\n 'username': 'NT AUTHORITY\\\\LocalService'}\n\nProjects using psutil\n=====================\n\nHere's some I find particularly interesting:\n\n- https://github.com/google/grr\n- https://github.com/facebook/osquery/\n- https://github.com/nicolargo/glances\n- https://github.com/aristocratos/bpytop\n- https://github.com/Jahaja/psdash\n- https://github.com/ajenti/ajenti\n- https://github.com/home-assistant/home-assistant/\n\nPortings\n========\n\n- Go: https://github.com/shirou/gopsutil\n- C: https://github.com/hamon-in/cpslib\n- Rust: https://github.com/rust-psutil/rust-psutil\n- Nim: https://github.com/johnscillieri/psutil-nim\n\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Cross-platform lib for process and system monitoring.",
"version": "7.1.3",
"project_urls": {
"Homepage": "https://github.com/giampaolo/psutil"
},
"split_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"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "bd930c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0",
"md5": "0b4b41bcaa55e9a25c83231f4296ce89",
"sha256": "0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "0b4b41bcaa55e9a25c83231f4296ce89",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.6",
"size": 239751,
"upload_time": "2025-11-02T12:25:58",
"upload_time_iso_8601": "2025-11-02T12:25:58.161404Z",
"url": "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6f8db31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f",
"md5": "694f275353cc9eb3507f87fd661d3c17",
"sha256": "19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "694f275353cc9eb3507f87fd661d3c17",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.6",
"size": 240368,
"upload_time": "2025-11-02T12:26:00",
"upload_time_iso_8601": "2025-11-02T12:26:00.491685Z",
"url": "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "626123fd4acc3c9eebbf6b6c78bcd89e5d020cfde4acf0a9233e9d4e3fa698b4",
"md5": "e3b22d0238e3e9ba93c6ad1ad761e269",
"sha256": "95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e3b22d0238e3e9ba93c6ad1ad761e269",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.6",
"size": 287134,
"upload_time": "2025-11-02T12:26:02",
"upload_time_iso_8601": "2025-11-02T12:26:02.613574Z",
"url": "https://files.pythonhosted.org/packages/62/61/23fd4acc3c9eebbf6b6c78bcd89e5d020cfde4acf0a9233e9d4e3fa698b4/psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "301cf921a009ea9ceb51aa355cb0cc118f68d354db36eae18174bab63affb3e6",
"md5": "315482d307e83fd32ec2c3af66fc82e5",
"sha256": "1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "315482d307e83fd32ec2c3af66fc82e5",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.6",
"size": 289904,
"upload_time": "2025-11-02T12:26:05",
"upload_time_iso_8601": "2025-11-02T12:26:05.207933Z",
"url": "https://files.pythonhosted.org/packages/30/1c/f921a009ea9ceb51aa355cb0cc118f68d354db36eae18174bab63affb3e6/psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a68262d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4",
"md5": "cd3f884dcb297f943940974cca80dec1",
"sha256": "18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp313-cp313t-win_amd64.whl",
"has_sig": false,
"md5_digest": "cd3f884dcb297f943940974cca80dec1",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.6",
"size": 249642,
"upload_time": "2025-11-02T12:26:07",
"upload_time_iso_8601": "2025-11-02T12:26:07.447774Z",
"url": "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dfadc1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f",
"md5": "435ab454b7b9e046fa8aa2bb3ba7fe2b",
"sha256": "c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp313-cp313t-win_arm64.whl",
"has_sig": false,
"md5_digest": "435ab454b7b9e046fa8aa2bb3ba7fe2b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.6",
"size": 245518,
"upload_time": "2025-11-02T12:26:09",
"upload_time_iso_8601": "2025-11-02T12:26:09.719155Z",
"url": "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2ebb6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909",
"md5": "a0195b77f0361b9955572a4b80455c95",
"sha256": "b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl",
"has_sig": false,
"md5_digest": "a0195b77f0361b9955572a4b80455c95",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.6",
"size": 239843,
"upload_time": "2025-11-02T12:26:11",
"upload_time_iso_8601": "2025-11-02T12:26:11.968073Z",
"url": "https://files.pythonhosted.org/packages/2e/bb/6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909/psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b866853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec",
"md5": "6aa15602f81f453802e1a164b822363f",
"sha256": "ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "6aa15602f81f453802e1a164b822363f",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.6",
"size": 240369,
"upload_time": "2025-11-02T12:26:14",
"upload_time_iso_8601": "2025-11-02T12:26:14.358801Z",
"url": "https://files.pythonhosted.org/packages/b8/66/853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec/psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "41bd313aba97cb5bfb26916dc29cf0646cbe4dd6a89ca69e8c6edce654876d39",
"md5": "5208c873534497457090425761cadf9b",
"sha256": "8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "5208c873534497457090425761cadf9b",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.6",
"size": 288210,
"upload_time": "2025-11-02T12:26:16",
"upload_time_iso_8601": "2025-11-02T12:26:16.699739Z",
"url": "https://files.pythonhosted.org/packages/41/bd/313aba97cb5bfb26916dc29cf0646cbe4dd6a89ca69e8c6edce654876d39/psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c2fa76e3c06e760927a0cfb5705eb38164254de34e9bd86db656d4dbaa228b04",
"md5": "52838ddf7fb79933445fdd1c9d2428bf",
"sha256": "fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "52838ddf7fb79933445fdd1c9d2428bf",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.6",
"size": 291182,
"upload_time": "2025-11-02T12:26:18",
"upload_time_iso_8601": "2025-11-02T12:26:18.848963Z",
"url": "https://files.pythonhosted.org/packages/c2/fa/76e3c06e760927a0cfb5705eb38164254de34e9bd86db656d4dbaa228b04/psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0f1d5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32",
"md5": "d7e4447654849d21cf4a30e187157bd2",
"sha256": "3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp314-cp314t-win_amd64.whl",
"has_sig": false,
"md5_digest": "d7e4447654849d21cf4a30e187157bd2",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.6",
"size": 250466,
"upload_time": "2025-11-02T12:26:21",
"upload_time_iso_8601": "2025-11-02T12:26:21.183069Z",
"url": "https://files.pythonhosted.org/packages/0f/1d/5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32/psutil-7.1.3-cp314-cp314t-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "00cae426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd",
"md5": "a5d15e16d77f77395205d7eaa1eab368",
"sha256": "31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp314-cp314t-win_arm64.whl",
"has_sig": false,
"md5_digest": "a5d15e16d77f77395205d7eaa1eab368",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.6",
"size": 245756,
"upload_time": "2025-11-02T12:26:23",
"upload_time_iso_8601": "2025-11-02T12:26:23.148427Z",
"url": "https://files.pythonhosted.org/packages/00/ca/e426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd/psutil-7.1.3-cp314-cp314t-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ef9446b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e",
"md5": "1cf3db74ea8eaa921b8ed278fade93ec",
"sha256": "2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1cf3db74ea8eaa921b8ed278fade93ec",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 238359,
"upload_time": "2025-11-02T12:26:25",
"upload_time_iso_8601": "2025-11-02T12:26:25.284599Z",
"url": "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "683a9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8",
"md5": "491f5fd50434e18545500bf3c819302c",
"sha256": "bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "491f5fd50434e18545500bf3c819302c",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 239171,
"upload_time": "2025-11-02T12:26:27",
"upload_time_iso_8601": "2025-11-02T12:26:27.230751Z",
"url": "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ceb15f49af514f76431ba4eea935b8ad3725cdeb397e9245ab919dbc1d1dc20f",
"md5": "3fe9fdd98bbd53f2c26dba444f427870",
"sha256": "3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "3fe9fdd98bbd53f2c26dba444f427870",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 263261,
"upload_time": "2025-11-02T12:26:29",
"upload_time_iso_8601": "2025-11-02T12:26:29.480632Z",
"url": "https://files.pythonhosted.org/packages/ce/b1/5f49af514f76431ba4eea935b8ad3725cdeb397e9245ab919dbc1d1dc20f/psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e095992c8816a74016eb095e73585d747e0a8ea21a061ed3689474fabb29a395",
"md5": "df2cdfc16e291527eb73a7ebb2bd37c3",
"sha256": "56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "df2cdfc16e291527eb73a7ebb2bd37c3",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 264635,
"upload_time": "2025-11-02T12:26:31",
"upload_time_iso_8601": "2025-11-02T12:26:31.740762Z",
"url": "https://files.pythonhosted.org/packages/e0/95/992c8816a74016eb095e73585d747e0a8ea21a061ed3689474fabb29a395/psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "554cc3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c",
"md5": "70fe3bf1b4436891982e9a5a05b76517",
"sha256": "f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp37-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "70fe3bf1b4436891982e9a5a05b76517",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 247633,
"upload_time": "2025-11-02T12:26:33",
"upload_time_iso_8601": "2025-11-02T12:26:33.887174Z",
"url": "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c9ad33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d",
"md5": "3a088c75fe9dc77845013e2928d8bc25",
"sha256": "bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1"
},
"downloads": -1,
"filename": "psutil-7.1.3-cp37-abi3-win_arm64.whl",
"has_sig": false,
"md5_digest": "3a088c75fe9dc77845013e2928d8bc25",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 244608,
"upload_time": "2025-11-02T12:26:36",
"upload_time_iso_8601": "2025-11-02T12:26:36.136434Z",
"url": "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e188bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6",
"md5": "99dbbe92985d5e5a3a45574ea521af67",
"sha256": "6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74"
},
"downloads": -1,
"filename": "psutil-7.1.3.tar.gz",
"has_sig": false,
"md5_digest": "99dbbe92985d5e5a3a45574ea521af67",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 489059,
"upload_time": "2025-11-02T12:25:54",
"upload_time_iso_8601": "2025-11-02T12:25:54.619294Z",
"url": "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-02 12:25:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "giampaolo",
"github_project": "psutil",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "psutil"
}