【问题标题】:Check if a particular Python script is already running检查特定的 Python 脚本是否已经在运行
【发布时间】:2017-10-05 15:43:10
【问题描述】:

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

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

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

【问题讨论】:

标签: python operating-system subprocess pycharm


【解决方案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,您有一个先前的实例正在运行。

希望这是有用的。

【讨论】:

    【解决方案2】:

    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 仅作为示例。您可能想要匹配完整路径。

    【讨论】:

    • 我必须插入 'prozesslinie = q.cmdline()' 然后测试它的 len。否则我得到错误'TypeError:'method'类型的对象没有len()'
    • 我已经调整了例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多