我可以使用终端命令获取总进程数。 我已尝试执行以下命令以获取进程计数-
ps aux | wc -l
对于线程数 -
ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END " "{ print num_threads }'
但我不想使用终端命令,因为它在我当前的项目中是不允许的,是否有任何 API 或其他方法可以让我在不调用终端的情况下获取此信息。
我曾尝试使用 threading 包,但它显示在进程级别,我得到的输出为 1。
我试过 psutil 但它提供了单个进程的信息。
附加信息
OS - Ubuntu 16
Python 3.7.2
最佳答案
试试这个:
如果你打算用一个大的 shell 命令来完成这一切,只需将 -c 参数添加到 grep,这样它就会给你一个行数而不是实际的行数:
ps uaxw |grep python |grep -v grep
当然,您可以通过添加一个 | 使它变得更复杂wc -l 到最后,或者通过计算 Python 中的行数,但是为什么呢?
或者,为什么还要涉及 shell?您可以像运行 grep 一样轻松地在 Python 中进行搜索——这样您就不会遇到意外创建一个 grep 进程的问题,该进程将在匹配您的搜索时重复执行,然后需要 grep -v 将其退出:
procs = subprocess.check_output(['ps', 'uaxw']).splitlines()
kms_procs = [proc for proc in procs if 'kms' in proc]
count = len(kms_procs)
或者,更简单地说,不要要求 ps 给你一大堆你不想要的信息,然后想方设法忽略它,只要求你想要的信息:
procs = subprocess.check_output(['ps', '-a', '-c', '-ocomm=']).splitlines()
count = procs.count('kms')
或者,更简单地说,安装 psutil,甚至不要尝试运行子进程并解析它们的输出:
count = sum(1 for proc in psutil.process_iter() if proc.name() == 'kms')
关于python - 如何使用 Python 在 Linux 中获取总运行进程数和线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592792/