自定义Python线程执行完毕未处理,是否会产生僵尸线程?
关于Python线程执行后是否会产生僵尸线程的问题
首先直接给出结论:不会留下僵尸线程。
具体解释:
- 你实现的
MyThread类中,run方法仅在执行完传入的func函数后就会结束,线程的生命周期随之正常终止。 - 在CPython解释器中,线程执行完毕退出后,解释器会自动完成该线程的资源清理工作,包括释放对应的系统资源。所谓“僵尸线程”的概念更多针对进程(指进程终止后父进程未回收其资源的情况),Python的线程机制不存在这类问题,因为线程的资源回收由解释器统一管理。
- 额外补充:
- 默认创建的线程都是非守护线程,主线程会等待所有非守护线程执行完毕后才会退出;
- 若将线程设置为守护线程(通过
thread.daemon = True),主线程退出时会直接终止所有守护线程,但无论哪种情况,线程结束后资源都会被正常回收,不会残留僵尸线程。
你的线程实现代码:
class MyThread(Thread): def __init__(self, func, args=()): Thread.__init__(self) self.__return_value = None self.func = func self.args = args self.func_name = func.__name__ def run(self): self.__return_value = self.func(*self.args)
内容的提问来源于stack exchange,提问作者PengZhi Xing
相关产品推荐
相关产品推荐

