psutil is a free, open source monitoring & observability project written in Python and released under BSD-3-Clause. It has 11,276 GitHub stars, 1,514 forks and 258 open issues, and was last pushed 3 days ago. On this registry it ranks #39 of 97 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available.
What is psutil?
psutil is a cross-platform Python library for retrieving information about running processes and system utilization — CPU, memory, disks, network and sensors — for developers and operators who need that data programmatically from inside Python code rather than from shell output.
What it is
psutil is a BSD-3-Clause licensed Python library, published on PyPI and documented at https://psutil.io, that exposes a single portable API for process and system monitoring. It supports Linux, Windows, macOS, FreeBSD, OpenBSD, NetBSD, Sun Solaris and AIX, and it returns structured objects — svmem, sswap, sdiskusage, sdiskpart, netio, sconn, pconn, pmem, shwtemp, sbattery, scpufreq — instead of text.
The concrete problem it solves is the portability tax of shelling out to platform-specific tools. psutil implements much of the functionality offered by UNIX command line utilities such as ps, top, free, iotop, netstat, ifconfig and lsof, replacing them with Python calls that behave the same way across platforms and do not require parsing locale-dependent output. It is intended mainly for system monitoring, profiling, limiting process resources and managing running processes.
Key capabilities
CPU inspection through psutil.cpu_percent(interval=1, percpu=True), psutil.cpu_count(logical=False) and psutil.cpu_freq(), which returns an scpufreq object with current, min and max values.
Memory reporting through psutil.virtual_memory() and psutil.swap_memory(), including swap-in and swap-out counters.
Disk inspection through psutil.disk_partitions() and psutil.disk_usage('/'), with device, mountpoint, fstype and mount options.
Network metrics through psutil.net_io_counters(pernic=True) for per-interface byte counts and psutil.net_connections(kind='tcp') for socket state, local and remote addresses, and owning PID.
Hardware sensors through psutil.sensors_temperatures() and psutil.sensors_battery().
Per-process introspection through psutil.Process(7055) with name(), exe(), cpu_percent(), memory_info(), net_connections(kind='tcp') and open_files().
Process enumeration through psutil.process_iter(['pid', 'name']), plus resource limiting and process management as stated use cases.
Who uses it and how
Large-scale Python deployments: psutil is among the top 100 most-downloaded packages on PyPI, at 390+ million downloads per month.
Widely embedded as a dependency: 780,000+ GitHub repositories use it, according to the project.
Monitoring and profiling workflows, where code samples call psutil.cpu_percent(percpu=True) and psutil.Process(...).memory_info() on a running interpreter.
Process supervision workflows, using process_iter, per-process cpu_percent() and open_files() to inspect what is running.
Cross-platform teams that must ship the same instrumentation code to Linux, Windows, macOS, BSD, Solaris and AIX hosts.
Getting started
Install with pip install psutil; the README directs readers to platform-specific installation notes and the API overview and API reference at https://psutil.io.
How it compares
This registry entry names no comparable Python package and no paid product, so psutil stands alone here. Its functional overlap is with the UNIX command line tools it reimplements — ps, top, free, iotop, netstat, ifconfig and lsof — which it replaces with a portable library API rather than a command invocation.
When to use it — and when not to
psutil returns measurements; it does not store them. There is no bundled database, no retention policy, no dashboard and no alert routing, so a self-hoster who wants a monitoring stack must write and operate the collection loop, the storage layer and the alerting around it. Teams wanting a turnkey observability platform with a UI should look elsewhere, and anyone who needs a stable long-term API contract should check the release history themselves, since the material provided here gives no version numbers or release cadence, and the project carries 258 open issues.
project readme (upstream, from github) — read inline
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 __ most-downloaded
packages on PyPI, with 390+ million downloads per month and 780,000+GitHub repositories __
using it. See also adoptions __ and
alternatives __.
psutil is open source under the BSD-3-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.
What does psutil do?
Cross-platform lib for process and system monitoring in Python
What is psutil written in?
psutil is primarily written in Python. Its source is publicly available at https://github.com/giampaolo/psutil, and it has 11,276 GitHub stars.