giampaolo
psutil
Python

Cross-platform lib for process and system monitoring in Python

Last updated Jul 8, 2026
11.2k
Stars
1.5k
Forks
392
Issues
+17
Stars/day
Attention Score
93
Language breakdown
Python 61.6%
C 37.4%
Makefile 0.9%
Shell 0.1%
โ–ธ Files click to expand
README

..

.. raw:: html

psutil

Process and System Utilities for Python

Documentation    Blog    Who uses psutil   


Downloads

Binary packages

Latest version

Linux, macOS, Windows

FreeBSD, NetBSD, OpenBSD

..

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 340+ million downloads per month, 770,000+ GitHub repositories <https://github.com/giampaolo/psutil/network/dependents>__ using it, and 16,000+ packages depending on it.

See also adoptions <https://psutil.readthedocs.io/latest/adoption.html>__ and alternatives <https://psutil.readthedocs.io/latest/alternatives.html>__.

Install =======

.. code-block::

pip install psutil

For platform-specific details see installation <https://psutil.readthedocs.io/latest/install.html>_.

Documentation =============

psutil documentation is available at https://psutil.readthedocs.io/latest.

..

Sponsors ========

.. raw:: html

add your logo

..

Example usages ==============

For the full API with more examples, see the API overview <https://psutil.readthedocs.io/latest/api-overview.html>_ and API reference <https://psutil.readthedocs.io/latest/api.html>_.

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.virtual_memory() svmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, ...) >>> 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)

Network

.. code-block:: python

>>> psutil.netiocounters(pernic=True) {'eth0': netio(bytessent=485291293, bytesrecv=6004858642, ...), 'lo': netio(bytessent=2838627, bytesrecv=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.pid, p.name()) ... 1 systemd 2 kthreadd 3 ksoftirqd/0 ...

.. _shell equivalents: https://psutil.readthedocs.io/latest/shell-equivalents.html

..

License =======

BSD-3

ยฉ 2026 GitRepoTrend ยท giampaolo/psutil ยท Updated daily from GitHub