【问题标题】:Python threading - listen to network while compilingPython线程 - 编译时监听网络
【发布时间】:2012-10-23 08:35:48
【问题描述】:

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

【问题讨论】:

  • 哪个操作系统?杀死东西很重要
  • gnu/linux (debian)。我得到了实际的杀戮、建造和消息传递。只是我遇到问题的线程/多进程。

标签: python multithreading concurrency process multiprocess


【解决方案1】:

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

如果你生成了一个新进程(使用multiprocessing.Process),那么你可以使用.terminate() 杀死它。当然,这会导致它立即停止——它不会自行清理,并且可能会污染任何共享数据结构。

【讨论】:

【解决方案2】:

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

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

while not self.stopped:
     do_come_compilation_stuff()

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

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多