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

Nic*_*ick 6 python process terminate

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

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

此外,我在Windows环境中工作.

我刚刚在这里找到了另一个答案:检查python脚本是否正在运行

Jos*_*hua 5

您可以通过以下方式获取自己的PID(过程标识符)

import os
os.getpid()
Run Code Online (Sandbox Code Playgroud)

并杀死Unix中的进程

import os, signal
os.kill(5383, signal.SIGKILL)
Run Code Online (Sandbox Code Playgroud)

在Windows中使用杀死

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

您可以将PID发送到另一个程序,也可以在进程列表中搜索以找到另一个脚本的名称,并使用上述脚本将其杀死。

希望对您有所帮助。


wor*_*ise 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)
Run Code Online (Sandbox Code Playgroud)

subprocess.Popen 启动外部 python 脚本,相当于在控制台或终端中输入“python myPyScript.py”。

如果进程仍在运行,则 subprocess.Popen.poll(extProc) 的状态将为“无”;如果进程已从此脚本中关闭,则(对我来说)为 1。不确定是否以其他方式关闭了状态。