2010-06-16 202 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。如果以另一种方式关闭状态,则无法确定状态。