繁体   English   中英

如何使用 python 计算系统中正在运行的程序实例数

[英]How to count how many instances of a program are running in the system using python

我想知道如何使用 python 计算系统中正在运行的程序实例数。

例如:如果我的终端打开了 3“次”,并且有 3 个终端实例,我如何使用 python 计算它们?

提前致谢

如果在python3中使用psutil package,这个问题就相当简单了

考虑下面的代码片段。

import psutil
from collections import Counter

process_ctr = Counter()

for process in psutil.process_iter():
    try:
        process_cmd_list = process.cmdline()
        for p in process_cmd_list:
            process_ctr[p] += 1
    except Exception:
        continue

for pname, cnt in process_ctr.items():
    print(pname, cnt)

运行此代码后,将获取进程名称和计数打印到stdout

测试:我打开了 3 个终端,我在 O/P 中注意到了这一点: -bash 3

样品 O/P:

--pdf-renderer 2
--js-flags=--jitless 2
--renderer-client-id=657 1
--launch-time-ticks=75930041264 1
--renderer-client-id=658 1
--launch-time-ticks=76065123981 1
--seatbelt-client=151 4
--renderer-client-id=659 1
--launch-time-ticks=76065777110 1
--renderer-client-id=663 1
--launch-time-ticks=76077686392 1
--renderer-client-id=100 1
--launch-time-ticks=1656826210 1
--renderer-client-id=665 1
--launch-time-ticks=76250675532 1
--seatbelt-client=168 11
--renderer-client-id=666 1
--launch-time-ticks=76252057630 1
-bash 3
/System/Library/PrivateFrameworks/CoreFollowUp.framework/Versions/A/Support/followupd 1
/System/Library/PrivateFrameworks/PhotoAnalysis.framework/Versions/A/Support/photoanalysisd 1
/System/Library/CoreServices/ScopedBookmarkAgent 1
--renderer-client-id=672 1
--launch-time-ticks=76542560240 1
--renderer-client-id=676 1
--launch-time-ticks=76557205901 1

笔记:

  1. try , catch是必需的,因为psutil无法访问某些进程详细信息,因为它们归 kernel 所有。

根据用户反馈,添加一些简洁的代码,只是为了获得感兴趣的过程的计数。

import psutil
from collections import Counter

process_ctr = Counter()

def get_process_count(pname):
    for process in psutil.process_iter():
        try:
            process_cmd_list = process.cmdline()
            for p in process_cmd_list:
                process_ctr[p] += 1
        except Exception:
            continue

    for p, cnt in process_ctr.items():
        if pname in p:
            return cnt

if __name__ == '__main__':
    cnt = get_process_count('qterminal')
    print(f"The cnt is:{cnt}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM