| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551 | Metadata-Version: 2.1Name: psutilVersion: 7.0.0Summary: Cross-platform lib for process and system monitoring in Python.  NOTE: the syntax of this script MUST be kept compatible with Python 2.7.Home-page: https://github.com/giampaolo/psutilAuthor: Giampaolo RodolaAuthor-email: g.rodola@gmail.comLicense: BSD-3-ClauseKeywords: 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,observabilityPlatform: Platform IndependentClassifier: Development Status :: 5 - Production/StableClassifier: Environment :: ConsoleClassifier: Environment :: Win32 (MS Windows)Classifier: Intended Audience :: DevelopersClassifier: Intended Audience :: Information TechnologyClassifier: Intended Audience :: System AdministratorsClassifier: License :: OSI Approved :: BSD LicenseClassifier: Operating System :: MacOS :: MacOS XClassifier: Operating System :: Microsoft :: Windows :: Windows 10Classifier: Operating System :: Microsoft :: Windows :: Windows 7Classifier: Operating System :: Microsoft :: Windows :: Windows 8Classifier: Operating System :: Microsoft :: Windows :: Windows 8.1Classifier: Operating System :: Microsoft :: Windows :: Windows Server 2003Classifier: Operating System :: Microsoft :: Windows :: Windows Server 2008Classifier: Operating System :: Microsoft :: Windows :: Windows VistaClassifier: Operating System :: MicrosoftClassifier: Operating System :: OS IndependentClassifier: Operating System :: POSIX :: AIXClassifier: Operating System :: POSIX :: BSD :: FreeBSDClassifier: Operating System :: POSIX :: BSD :: NetBSDClassifier: Operating System :: POSIX :: BSD :: OpenBSDClassifier: Operating System :: POSIX :: BSDClassifier: Operating System :: POSIX :: LinuxClassifier: Operating System :: POSIX :: SunOS/SolarisClassifier: Operating System :: POSIXClassifier: Programming Language :: CClassifier: Programming Language :: Python :: 3Classifier: Programming Language :: Python :: Implementation :: CPythonClassifier: Programming Language :: Python :: Implementation :: PyPyClassifier: Programming Language :: PythonClassifier: Topic :: Software Development :: Libraries :: Python ModulesClassifier: Topic :: Software Development :: LibrariesClassifier: Topic :: System :: BenchmarkClassifier: Topic :: System :: Hardware :: Hardware DriversClassifier: Topic :: System :: HardwareClassifier: Topic :: System :: MonitoringClassifier: Topic :: System :: Networking :: Monitoring :: Hardware WatchdogClassifier: Topic :: System :: Networking :: MonitoringClassifier: Topic :: System :: NetworkingClassifier: Topic :: System :: Operating SystemClassifier: Topic :: System :: Systems AdministrationClassifier: Topic :: UtilitiesRequires-Python: >=3.6Description-Content-Type: text/x-rstLicense-File: LICENSEProvides-Extra: devRequires-Dist: pytest ; extra == 'dev'Requires-Dist: pytest-xdist ; extra == 'dev'Requires-Dist: setuptools ; extra == 'dev'Requires-Dist: pywin32 ; extra == 'dev'Requires-Dist: wheel ; extra == 'dev'Requires-Dist: wmi ; extra == 'dev'Requires-Dist: abi3audit ; extra == 'dev'Requires-Dist: black ==24.10.0 ; extra == 'dev'Requires-Dist: check-manifest ; extra == 'dev'Requires-Dist: coverage ; extra == 'dev'Requires-Dist: packaging ; extra == 'dev'Requires-Dist: pylint ; extra == 'dev'Requires-Dist: pyperf ; extra == 'dev'Requires-Dist: pypinfo ; extra == 'dev'Requires-Dist: pytest-cov ; extra == 'dev'Requires-Dist: requests ; extra == 'dev'Requires-Dist: rstcheck ; extra == 'dev'Requires-Dist: ruff ; extra == 'dev'Requires-Dist: sphinx ; extra == 'dev'Requires-Dist: sphinx-rtd-theme ; extra == 'dev'Requires-Dist: toml-sort ; extra == 'dev'Requires-Dist: twine ; extra == 'dev'Requires-Dist: virtualenv ; extra == 'dev'Requires-Dist: vulture ; extra == 'dev'Requires-Dist: pyreadline ; extra == 'dev'Requires-Dist: pdbpp ; extra == 'dev'Provides-Extra: testRequires-Dist: pytest ; extra == 'test'Requires-Dist: pytest-xdist ; extra == 'test'Requires-Dist: setuptools ; extra == 'test'Requires-Dist: pywin32 ; extra == 'test'Requires-Dist: wheel ; extra == 'test'Requires-Dist: wmi ; extra == 'test'|  |downloads| |stars| |forks| |contributors| |coverage||  |version| |py-versions| |packages| |license||  |github-actions-wheels|  |github-actions-bsd| |doc| |twitter| |tidelift|.. |downloads| image:: https://img.shields.io/pypi/dm/psutil.svg    :target: https://pepy.tech/project/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.. |py-versions| image:: https://img.shields.io/pypi/pyversions/psutil.svg    :alt: Supported Python versions.. |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 forretrieving information on **running processes** and **system utilization**(CPU, memory, disks, network, sensors) in Python.It is useful mainly for **system monitoring**, **profiling and limiting processresources** and **management of running processes**.It implements many functionalities offered by classic UNIX command line toolssuch 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 benefitimmensely from some funding.Keeping up with bug reports and maintenance has become hardly sustainable forme alone in terms of time.If you're a company that's making significant use of psutil you can considerbecoming 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
 |