记录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)
上一篇下一篇

猜你喜欢

热点阅读