第十章:使用进程、线程和协程提供并发性-multiprocessing:像线程一样管理进程-终止进程

博客介绍了进程终止相关内容。虽推荐用“毒药”方法让进程退出,但对于挂起或死锁进程,可调用terminate()强制结束。同时说明终止进程后要用join()等待退出,让进程管理代码更新对象状态,避免问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()等待进程退出,进程管理代码有足够的事件更新对象的状态,以方言进程已经终止。
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值