我有一個長期運行的python腳本,我希望能夠從另一個python腳本結束。理想情況下,我正在尋找的方法是將進程ID設置爲第一個腳本,並通過第二個腳本中的ID來查看它是否正在運行。另外,我希望能夠終止長時間運行的進程。從另一個python腳本終止python腳本
有沒有很酷的捷徑可以讓這種情況發生?
此外,我正在Windows環境中工作。
我剛剛發現了一個備選答案在這裏:Check to see if python script is running
我有一個長期運行的python腳本,我希望能夠從另一個python腳本結束。理想情況下,我正在尋找的方法是將進程ID設置爲第一個腳本,並通過第二個腳本中的ID來查看它是否正在運行。另外,我希望能夠終止長時間運行的進程。從另一個python腳本終止python腳本
有沒有很酷的捷徑可以讓這種情況發生?
此外,我正在Windows環境中工作。
我剛剛發現了一個備選答案在這裏:Check to see if python script is running
您可以通過
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發送到其他程序,或者您可以在進程列表中搜索以查找其他腳本的名稱並使用上面的腳本將其終止。
我希望能幫到你。
您正在查找的是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。如果以另一種方式關閉狀態,則無法確定狀態。
os.kill是Unix的唯一操作。 – Nick 2010-06-16 16:03:45
os.kill可以模擬: http://docs.python.org/faq/windows.html#how-do-i-emulate-os-kill-in-windows – Nick 2010-06-16 16:28:43