Python线程 - 在编译时监听网络

时间:2012-10-23 08:35:48

标签: python multithreading concurrency process multiprocess

在python(2.6.6)中,我可以让一个线程/进程在同时进行工作(编译)时检查网络(消息队列)的最佳方法。如果我在消息队列中收到命令,我必须能够杀死并生成编译线程。

2 个答案:

答案 0 :(得分:0)

没有用于杀死线程的官方Python API - 您需要使用特定于操作系统的方法。

如果您生成一个新进程(使用multiprocessing.Process),则可以使用.terminate()将其终止。当然,这会导致它立即停止 - 它不会自行清理,也可能污染任何共享数据结构。

答案 1 :(得分:0)

如上所述,没有用于杀死线程的Python API。您必须使用多处理或协作设计模式。

如果你想做后者,你可以简单地使用合作设计模式,工作者线程定期检查是否应该杀死它们。 E.g:

while not self.stopped:
     do_come_compilation_stuff()

然后在主线程中,您应该为工作线程设置停止标志。如果您希望程序正确处理CTRL-C等信号,这也是一个有用的设计模式。