10

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

有什么很酷的捷径可以做到这一点吗?

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

我最近在这里找到了一个替代答案:检查 python 脚本是否正在运行

4

2 回答 2

8

您可以通过

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

我希望这对你有帮助。

于 2010-06-16T15:42:16.120 回答
5

您正在寻找subprocess 模块

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) 的状态将为“无”,如果已从该脚本中关闭,则(对我而言)为 1。如果它以另一种方式关闭,则不确定状态是什么。

于 2015-06-24T01:42:24.827 回答