10.4.6 终止进程
尽管最好使用"毒药"(poison pill)方法向进程发出信号,告诉它应当退出,但是如果一个进程看起来已经挂起或陷入死锁,那么能够强制性地将其结束会很有用。对一个进程对象调用terminate()会结束子进程。
import multiprocessing
import time
def slow_worker():
print('Starting worker')
time.sleep(0.1)
print('Finished worker')
if __name__ == '__main__':
p = multiprocessing.Process(target=slow_worker)
print('BEFORE:',p,p.is_alive())
p.start()
print('DURING:',p,p.is_alive())
p.terminate()
print('TERMINATED:',p,p.is_alive())
p.join()
print('JOINED:',p,p.is_alive())
说明:终止进程后要使用join()等待进程退出,进程管理代码有足够的事件更新对象的状态,以方言进程已经终止。
运行结果: