这是我在Python文档中找到的摘录:
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
我认为上述模式缺少一些重要功能。
例如:如果在工作线程中发生未捕获的异常,则该工作线程将无法恢复。迟早所有工人都会崩溃,因为发生了未捕获的异常。
我想在上面的代码段中使用它是不明智的。
在我的上下文中,我需要一个在systemd(linux)下运行的简单守护程序。
不应使用Rabbit / MQ之类的消息/队列服务器。
如何获得可靠的多线程解决方案?
不幸的是,我们需要支持Python2.7