检查特定的Python脚本是否已在运行

时间:2017-05-07 16:45:37

标签: python operating-system subprocess pycharm

如何从Python脚本中检查是否正在运行另一个特定的Python脚本?

def running():
    for q in psutil.process_iter():
        print q
        if q.name() == 'server_class.py':
            return True
    return False

我试过了,但该程序被称为“python”,而不是脚本的名称。

2 个答案:

答案 0 :(得分:1)

python脚本文件将成为命令行的一部分。你可以尝试这些方法:

def running():

    for q in psutil.process_iter():
        if q.name() == 'python':
            print q.cmdline()
            if len(q.cmdline())>1 and 'server_class.py' in q.cmdline()[1]:
                return True

    return False

我正在使用in作为示例。您可能希望匹配完整路径。

答案 1 :(得分:-1)

案例: 要退出脚本时,如果先前的实例已经在运行:

def already_running(script_name):
num_instance = 0
for q in psutil.process_iter():
    if 'python' in q.name():
        if len(q.cmdline()) > 1 and script_name in q.cmdline()[1]:
            num_instance += 1
return num_instance > 1

功能:

  1. 它检查当前正在运行的script_name的实例数。如果您是从文件xyz.py调用并发送xyz.py作为参数,请记住,当前实例也将被计数

  2. 如果num_instance> 1,则您正在运行以前的实例。

希望这很有用。