部分平台需按官方 installation 页面处理平台特定安装细节;部分传感器、连接类接口在不同系统上可用性不一致
pip install psutilREADME 未说明,纯 Python 库,支持 Linux、Windows、macOS、FreeBSD、OpenBSD、NetBSD、Sun Solaris、AIX
Python 跨平台库,用来读取进程和系统资源信息,替代 ps、top 等命令
跨平台 Python 库,用来采集进程和系统运行状态,CPU、内存、磁盘、网络、传感器等指标都能直接读取,省去自己适配不同操作系统。
核心能力
- 获取 CPU 使用率、核心数与频率
- 读取物理内存和 swap 用量
- 枚举磁盘分区与磁盘使用率
- 统计网卡收发字节与 TCP 连接
- 查询进程信息并迭代遍历所有进程
容易踩的坑
暂无 release 数据(可能没有发版,或尚未同步)。
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
..
.. raw:: html
<div align="center">
<a href="https://github.com/giampaolo/psutil"><img src="https://github.com/giampaolo/psutil/raw/master/docs/_static/images/logo-psutil-readme.svg" alt="psutil" /></a>
<p align="center">Process and System Utilities for Python</p>
<a href="https://psutil.io/"><b>Documentation</b></a>
<a href="https://psutil.io/blog/"><b>Blog</b></a>
<a href="https://psutil.io/adoption/"><b>Who uses psutil</b></a>
</div>
<br/>
<div align="center">
<a href="https://clickpy.clickhouse.com/dashboard/psutil"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fsql-clickhouse.clickhouse.com%2F%3Fuser%3Dplay%26query%3DWITH%2B%2528SELECT%2Bmax%2528date%2529%2BFROM%2Bpypi.pypi_downloads_per_day%2BWHERE%2Bproject%253D%2527psutil%2527%2529%2BAS%2Bm%2BSELECT%2Bconcat%2528toString%2528round%2528sum%2528count%2529%2B%252F%2B1e6%2529%2529%252C%2B%2527M%2527%2529%2BAS%2Bn%2BFROM%2Bpypi.pypi_downloads_per_day%2BWHERE%2Bproject%253D%2527psutil%2527%2BAND%2Bdate%2B%253E%2Bm%2B-%2BtoIntervalMonth%25281%2529%2BAND%2Bdate%2B%253C%253D%2Bm%2BFORMAT%2BJSONEachRow&query=%24.n&label=downloads%2Fmonth&color=blue&cacheSeconds=86400" alt="Downloads"></a>
<a href="https://repology.org/metapackage/python:psutil/versions"><img src="https://repology.org/badge/tiny-repos/python:psutil.svg" alt="Binary packages"></a>
<a href="https://pypi.org/project/psutil"><img src="https://img.shields.io/pypi/v/psutil.svg?label=pypi&color=yellowgreen" alt="Latest version"></a>
</div>
<div align="center">
<a href="https://github.com/giampaolo/psutil/actions?query=workflow%3Atests"><img src="https://img.shields.io/github/actions/workflow/status/giampaolo/psutil/.github/workflows/tests.yml.svg?label=Linux%2C%20Windows%2C%20macOS" alt="Linux, Windows, macOS"></a>
<a href="https://github.com/giampaolo/psutil/actions?query=workflow%3Absd"><img src="https://img.shields.io/github/actions/workflow/status/giampaolo/psutil/.github/workflows/bsd.yml.svg?label=BSD" alt="FreeBSD, NetBSD, OpenBSD"></a>
<a href="https://github.com/giampaolo/psutil/actions?query=workflow%3Adocs"><img src="https://img.shields.io/github/actions/workflow/status/giampaolo/psutil/.github/workflows/docs.yml.svg?label=docs" alt="Documentation"></a>
</div>
..
About
psutil is a cross-platform library for retrieving information about running
processes and system utilization (CPU, memory, disks, network, sensors)
in Python. It is useful mainly for system monitoring, profiling,
limiting process resources, and managing running processes. It
implements many functionalities offered by UNIX command line tool such as
ps, top, free, iotop, netstat, ifconfig, lsof and others (see
shell equivalents_). Psutil supports the following platforms:
- Linux
- Windows
- macOS
- FreeBSD, OpenBSD, NetBSD
- Sun Solaris
- AIX
Adoption
psutil is among the
top 100 <https://clickpy.clickhouse.com/dashboard/psutil>__ most-downloaded
packages on PyPI, with 320+ million downloads per month and 790,000+
GitHub repositories <https://github.com/giampaolo/psutil/network/dependents>__
using it. See also adoptions <https://psutil.io/adoption/>__ and
alternatives <https://psutil.io/alternatives/>__.
Install
.. code-block::
pip install psutil
For platform-specific details see installation <https://psutil.io/install/>_.
Documentation
psutil documentation is available at https://psutil.io.
..
Sponsors
.. raw:: html
<table border="0" cellpadding="10" cellspacing="0" class="sponsor-table">
<tr>
<td align="center" style="vertical-align: middle;">
<a href="https://tidelift.com/subscription/pkg/pypi-psutil?utm_source=pypi-psutil&utm_medium=referral&utm_campaign=readme"><img width="160" src="https://raw.githubusercontent.com/giampaolo/psutil/refs/heads/master/docs/_static/images/logo-tidelift.svg" class="sponsor-logo"></a>
</td>
<td align="center" style="vertical-align: middle;">
<a href="https://sansec.io/"><img width="145" src="https://raw.githubusercontent.com/giampaolo/psutil/refs/heads/master/docs/_static/images/logo-sansec.svg" class="sponsor-logo"></a>
</td>
<td align="center" style="vertical-align: middle;">
<a href="https://www.apivoid.com/"><img width="130" src="https://raw.githubusercontent.com/giampaolo/psutil/refs/heads/master/docs/_static/images/logo-apivoid.svg" class="sponsor-logo"></a>
</td>
</tr>
</table>
<div style="text-align: center;"><sup><a href="https://psutil.io/funding/">add your logo</a></sup></div>
..
Example usages
For the full API with more examples, see the
API overview <https://psutil.io/api-overview/>_ and
API reference <https://psutil.io/api/>_.
CPU
.. code-block:: python
>>> import psutil
>>> psutil.cpu_percent(interval=1, percpu=True)
[4.0, 6.9, 3.7, 9.2]
>>> psutil.cpu_count(logical=False)
2
>>> psutil.cpu_freq()
scpufreq(current=931.42, min=800.0, max=3500.0)
Memory
.. code-block:: python
>>> psutil.memory_physical()
smem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, ...)
>>> psutil.memory_swap()
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)
Network
.. code-block:: python
>>> psutil.net_io_counters(pernic=True)
{'eth0': snetio(bytes_sent=485291293, bytes_recv=6004858642, ...),
'lo': snetio(bytes_sent=2838627, bytes_recv=2838627, ...)}
>>> psutil.net_connections(kind='tcp')
[sconn(fd=115, family=2, type=1, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED', pid=1254),
...]
Sensors
.. code-block:: python
>>> psutil.sensors_temperatures()
{'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_battery()
sbattery(percent=93, secsleft=16628, power_plugged=False)
Processes
.. code-block:: python
>>> p = psutil.Process(7055)
>>> p.name()
'python3'
>>> p.exe()
'/usr/bin/python3'
>>> p.cpu_percent(interval=1.0)
12.1
>>> p.memory_info()
pmem(rss=3164160, vms=4410163, shared=897433, text=302694, data=2422374)
>>> p.net_connections(kind='tcp')
[pconn(fd=115, family=2, type=1, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED')]
>>> p.open_files()
[popenfile(path='/home/giampaolo/monit.py', fd=3, position=0, mode='r', flags=32768)]
>>>
>>> for p in psutil.process_iter(['pid', 'name']):
... print(p.snapshot.pid, p.snapshot.name)
...
1 systemd
2 kthreadd
3 ksoftirqd/0
...
.. _shell equivalents: https://psutil.io/shell-equivalents/
..
License
BSD-3