我正在做一个python项目,如果我希望我的线程有与C
中相同的行为。在C
中,当主线程退出时,它会杀死所有其他线程。在
该项目包含一个TCP
错误服务器,用于从其他线程和其他软件获取日志。TCP
链接是单工的。
有些错误一定涉及到整个程序的结束。在
PID
杀死它们。在sys._exit()
,有时它可以工作,有时一些线程仍然存在。在如果我的其他线程在循环,我可以使用semaphore
或类似的东西,但它只是线性过程的一次迭代。在
我考虑过设计模式Producer/Consumer
或者添加了很多lock.acquire()/lock.release()
,但我认为它会增加更多的复杂性,意味着打破了线性线程。在
我已经看过其他Stackoverflow
问题,我找到了这些解决方案:
sys._exit()
,但其成功率不是100%。在subprocess
以轻松地杀死它们,但在我的情况下我不能我正在寻找一个解决方案,一个设计模式或其他什么来解决它。在
PS:我是一个C
爱好者,每次处理Python时,我都会想到一些简单的解决方案,比如调用exit()
来杀死我所有的线程。在
如果你让你的工作线程守护进程线程,当你所有的非守护进程线程(例如主线程)都退出时,它们就会死掉。在
http://docs.python.org/library/threading.html#threading.Thread.daemon
线程守护程序状态
isDaemon()
是False
,通过setDaemon(True)
设置它True
另一个解决方案:
要使线程在键盘中断信号(ctrl+c)上停止,您可以在退出前捕捉异常“KeyboardInterrup”并进行清理。像这样:
相关问题 更多 >
编程相关推荐