从另一个python脚本终止python脚本

时间:2010-06-16 15:29:21

标签: python process terminate

我有一个长期运行的python脚本,我希望能够从另一个python脚本结束。理想情况下,我正在寻找的是一种方法,将进程ID设置为第一个脚本,并能够通过第二个脚本中的ID识别它是否正在运行。另外,我希望能够终止那个漫长的过程。

存在任何很酷的捷径来实现这一目标吗?

另外,我在Windows环境中工作。

我最近在这里找到了另一个答案:Check to see if python script is running

2 个答案:

答案 0 :(得分:4)

您可以通过

获得自己的PID(流程标识符)
import os
os.getpid()

并在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发送到其他程序,或者您可以在进程列表中搜索以查找其他脚本的名称并使用上述脚本将其终止。

我希望能帮助你。

答案 1 :(得分:3)

您正在寻找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。如果以另一种方式关闭状态,则不确定状态是什么。