2016-06-22 27 views
1

Ich möchte ein Python-Skript aus einem anderen Python-Skript starten. Ich weiß wie es geht. Aber ich sollte dieses Skript nur starten, wenn es nicht bereits läuft.Führen Sie Python-Skript nur, wenn es nicht ausgeführt wird

Code:

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

Aber ich bin nicht sicher, wie zu überprüfen, ob dieses Skript bereits ist oder nicht ausgeführt wird.

+0

http://unix.stackexchange.com/questions/110698/how-to-check-which-specific-processes-python-scripts-are-running könnte helfen – Jeremy

+0

Etwas einfach wie 'pgrep -f 'new_script .py '|| ./new_script.py' oder du musst eine Lockdatei mit der PID verwenden. –

Antwort

2

Try this:

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

über diese alte Frage kam mir für Lösung suchen.

Verwendung 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']) 

Sie auch ermitteln kann Zeit des vorherigen Prozesses starten, wenn es zu lange laufen und könnte gehängt werden:

process.create_time() 

Es Tonnen anderer nützlicher Metadaten des Prozesses.

Verwandte Themen