【问题标题】:Run python script only if it's not running仅在未运行时运行 python 脚本
【发布时间】:2016-10-24 09:33:36
【问题描述】:

我想从另一个 python 脚本启动一个 python 脚本。我知道该怎么做。但只有在它尚未运行时,我才应该启动此脚本。

代码:

import os
os.system("new_script.py")

但我不确定如何检查此脚本是否已在运行。

【问题讨论】:

标签: python linux python-2.7


【解决方案1】:

试试这个:

import subprocess
import os 

p = subprocess.Popen(['pgrep', '-f', 'your_script.py'], stdout=subprocess.PIPE)
out, err = p.communicate()

if len(out.strip()) == 0:
    os.system("new_script.py")

【讨论】:

    【解决方案2】:

    自己遇到了这个老问题,正在寻找解决方案。

    使用psutil:

    import psutil
    import sys
    from subprocess import Popen
    
    for process in psutil.process_iter():
        if process.cmdline() == ['python', 'your_script.py']:
            sys.exit('Process found: exiting.')
    
    print('Process not found: starting it.')
    Popen(['python', 'your_script.py'])
    

    您还可以使用前一个进程的开始时间来确定它是否运行时间过长并可能被挂起:

    process.create_time()
    

    该过程还有大量其他有用的元数据。

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 2015-05-15
      • 2012-11-15
      • 2014-11-28
      • 2021-01-07
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多