在python(2.6.6)中,我可以让一个线程/进程在同时进行工作(编译)时检查网络(消息队列)的最佳方法。如果我在消息队列中收到命令,我必须能够杀死并生成编译线程。
答案 0 :(得分:0)
没有用于杀死线程的官方Python API - 您需要使用特定于操作系统的方法。
如果您生成一个新进程(使用multiprocessing.Process
),则可以使用.terminate()
将其终止。当然,这会导致它立即停止 - 它不会自行清理,也可能污染任何共享数据结构。
答案 1 :(得分:0)
如上所述,没有用于杀死线程的Python API。您必须使用多处理或协作设计模式。
如果你想做后者,你可以简单地使用合作设计模式,工作者线程定期检查是否应该杀死它们。 E.g:
while not self.stopped:
do_come_compilation_stuff()
然后在主线程中,您应该为工作线程设置停止标志。如果您希望程序正确处理CTRL-C等信号,这也是一个有用的设计模式。