记录Python关闭子进程的几种方法
2019-04-08 本文已影响0人
叮咚猫_503b
1.terminate()函数
这种方法强制终止进程,不会进行任何清理操作,如果目标线程创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况。如果目标线程还保存了一个锁那么也将不会被释放,进而导致死锁
multiprocessing.terminate()
2.multiprocessing.Value对象
通过全局变量、互斥锁或信号量等进程间通信手段来达到关闭的目的。
下面代码通过alive.value = False传值 关闭结束进程
from multiprocessing import Process, Value
import time
alive = Value('b', False)
def worker(alive):
while alive.value:
time.sleep(0.1)
print("running")
if __name__ == '__main__':
p = Process(target=worker, args=(alive,))
alive.value = True
p.start()
time.sleep(1)
alive.value = False
3.对子进程发送signal
相当于发送 Ctrl + C 信号于命令行执行关闭命令
p.process.signal(signal.SIGINT)