2010-06-16 16 views
5

Ho uno script python di lunga durata che voglio essere in grado di terminare da un altro script python. Idealmente, quello che sto cercando è un modo per impostare un ID di processo per il primo script ed essere in grado di vedere se è in esecuzione o meno tramite quell'ID dal secondo. Inoltre, mi piacerebbe essere in grado di terminare quel processo di lunga durata.Terminare uno script python da un altro script python

Esistono scorciatoie interessanti per far sì che ciò accada?

Inoltre, sto lavorando in un ambiente Windows.

Ho da poco scoperto una risposta alternativa qui: Check to see if python script is running

risposta

5

si potrebbe ottenere il proprio PID (Process Identifier) ​​attraverso

import os 
os.getpid() 

e di uccidere un processo in Unix

import os, signal 
os.kill(5383, signal.SIGKILL) 

per uccidere in Windows utilizzare

import subprocess as s 
def killProcess(pid): 
    s.Popen('taskkill /F /PID {0}'.format(pid), shell=True) 

È possibile inviare il PID all'altro programma oppure cercare nell'elenco dei processi per trovare il nome dell'altro script e ucciderlo con lo script precedente.

Spero che questo ti aiuti.

+0

os.kill è un'operazione solo Unix. – Nick

+0

os.kill può essere emulato: http://docs.python.org/faq/windows.html#how-do-i-emulate-os-kill-in-windows – Nick

1

Stai cercando il subprocess module.

import subprocess as sp 

extProc = sp.Popen(['python','myPyScript.py']) # runs myPyScript.py 

status = sp.Popen.poll(extProc) # status should be 'None' 

sp.Popen.terminate(extProc) # closes the process 

status = sp.Popen.poll(extProc) # status should now be something other than 'None' ('1' in my testing) 

subprocess.Popen avvia lo script pitone esterna, equivalente a digitare 'pitone myPyScript.py' in una console o terminale.

Lo stato da subprocess.Popen.poll (extProc) sarà 'None' se il processo è ancora in esecuzione e (per me) 1 se è stato chiuso all'interno di questo script. Non sei sicuro di quale sia lo stato se è stato chiuso in un altro modo.

Problemi correlati