.. .. 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 `__ most-downloaded packages on PyPI, with **370+ million** downloads per month and **780,000+** `GitHub repositories `__ using it. See also `adoptions `__ and `alternatives `__. Install ======= .. code-block:: pip install psutil For platform-specific details see `installation `_. Documentation ============= psutil documentation is available at https://psutil.readthedocs.io/latest. .. Sponsors ======== .. raw:: html .. Example usages ============== For the full API with more examples, see the `API overview `_ and `API reference `_. **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.net_io_counters(pernic=True) {'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, ...), 'lo': netio(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.pid, p.name()) ... 1 systemd 2 kthreadd 3 ksoftirqd/0 ... .. _`shell equivalents`: https://psutil.readthedocs.io/latest/shell-equivalents.html .. License ======= BSD-3