2010-06-16 190 views
5

我有一個長期運行的python腳本,我希望能夠從另一個python腳本結束。理想情況下,我正在尋找的方法是將進程ID設置爲第一個腳本,並通過第二個腳本中的ID來查看它是否正在運行。另外,我希望能夠終止長時間運行的進程。從另一個python腳本終止python腳本

有沒有很酷的捷徑可以讓這種情況發生?

此外,我正在Windows環境中工作。

我剛剛發現了一個備選答案在這裏:Check to see if python script is running

回答

5

您可以通過

import os 
os.getpid() 

得到自己的PID(進程標識符)和Unix的

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

殺死一個進程殺死Windows使用

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

您可以將PID發送到其他程序,或者您可以在進程列表中搜索以查找其他腳本的名稱並使用上面的腳本將其終止。

我希望能幫到你。

+0

os.kill是Unix的唯一操作。 – Nick 2010-06-16 16:03:45

+0

os.kill可以模擬: http://docs.python.org/faq/windows.html#how-do-i-emulate-os-kill-in-windows – Nick 2010-06-16 16:28:43

1

您正在查找的是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啓動外部python腳本,相當於在控制檯或終端中鍵入'python myPyScript.py'。

如果進程仍在運行,subprocess.Popen.poll(extProc)的狀態將爲'None',並且(對於我)如果已從此腳本中關閉,則爲1。如果以另一種方式關閉狀態,則無法確定狀態。

相關問題