2016-06-22 134 views
1

我想从另一个python脚本启动python脚本。我知道如何去做。但是,只有在它尚未运行的情况下,我才应该启动此脚本。只运行python脚本,如果它没有运行

代码:

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

但我不知道如何检查,如果该脚本已经运行与否。

+0

http://unix.stackexchange.com/questions/110698/how-to-check-which-specific-processes-python-scripts-are-running可能有帮助 – Jeremy

+0

一些简单的东西,比如'pgrep -f'new_script的.py'|| 。/ new_script.py'或者你必须在PID中使用一个锁文件。 –

回答

2

试试这个:

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

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

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

有吨的其他有用的元数据的的过程。