仅当python脚本未运行时才运行它

时间:2016-06-22 12:30:49

标签: python linux python-2.7

我想从另一个python脚本启动一个python脚本。我知道该怎么做。但是我应该只在它还没有运行时启动它。

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

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

2 个答案:

答案 0 :(得分:3)

试试这个:

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")

答案 1 :(得分:1)

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

使用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()

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