[英]How to kill subprocess python in windows
我将如何在 Windows 上终止进程?
我正在开始这个过程
self.p = Process(target=self.GameInitialize, args=(testProcess,))
self.p.start()
我试过了
self.p.kill()
self.p.terminate()
os.kill(self.p.pid, -1)
os.killpg(self.p.pid, signal.SIGTERM) # Send the signal to all the process groups
错误
Process Object has no Attribute kill
Process Object has no Attribute terminate
Access Denied
我不能使用.join.
在 Windows 上, os.killpg
将不起作用,因为它会向进程 ID 发送信号以终止。 这就是您现在如何在 Windows 上TerminateProcess
进程,而您必须使用 win32 API 的TerminateProcess
来TerminateProcess
进程。
因此,您可以在 Windows 上通过以下方式终止进程:
import signal
os.kill(self.p.pid, signal.CTRL_C_EVENT)
如果上述方法不起作用,请尝试使用signal.CTRL_BREAK_EVENT
。
您应该提供您遇到的问题的最小可行示例。 如下所示,这个最小的工作示例正确终止了进程(在 Python 2.7.5 64 位上测试),因此您看到的错误在于您尚未显示的代码。
import multiprocessing as mp
import time
def work():
while True:
print('work process')
time.sleep(.5)
if __name__ == '__main__':
p = mp.Process(target=work)
p.start()
for i in range(3):
print('main process')
time.sleep(1)
p.terminate()
for i in range(3):
print('main process')
time.sleep(.5)
输出:
main process
work process
work process
main process
work process
work process
main process
work process
work process
main process
main process
main process
os.kill(self.p.pid, -9)
作品。 我不确定为什么 -1 返回访问被拒绝错误,但 -9 没有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.