2

我在 mac osx 10.9 上使用 python 2.7。

我想检查一个进程是否正在运行。我调查了这个问答,但结果并不理想。

我想检查是否有任何特定名称的进程正在运行

4

3 回答 3

5

尝试这个。如果它返回一个进程 id,那么你有这个进程正在运行。使用您的进程名称而不是firefox.

import commands
commands.getoutput('pgrep firefox')

由于命令模块不再在 python 3x 中,我们可以在subprocess这里使用模块接收进程 ID。

import subprocess
process = subprocess.Popen('pgrep firefox', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
my_pid, err = process.communicate()

这里 my_pid 将是进程 ID。

于 2014-04-10T10:25:53.297 回答
3

使用模块psutil。例如:

import psutil

...    

if pid in psutil.get_pid_list():
    print pid, "is running"

编辑:您可以像这样获取所有正在运行的进程的 pid 和名称:

for p in psutil.process_iter():
    if p.name == 'firefox':
        print "firefox is running"
        break
于 2014-04-10T10:15:18.620 回答
0

我只是在尝试上面的代码,但它对我使用 python 2.7 不起作用还没有在 python 3 上尝试过代码。发布更新的代码,它可能对某人有帮助

for p in psutil.process_iter(): #iterate through all running processes 
    if p.name() == 'firefox':
        print "firefox is running"
        break
于 2017-06-19T17:19:14.000 回答