[英]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
笔记:
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.