多线程:多个线程收集信息,一个做工作

Multi Threading: Multiple threads collecting information, One does work

我正在编写的代码应具有以下结构:

谁能给我一些 code/pseudo 代码,告诉我如何做这样的事情。主要是关于我应该使用哪种缓冲区以及线程如何通信以便正确收集和处理所有数据。

我已经阅读了 python 中的 "Queue" 和 "threading" class。但是,我仍然不确定如何正确执行此操作。我已经用 threading.Event() 对象尝试了多个简单示例 - 但是结果不一致。

非常感谢!

如果您的工作人员可以看到正在完成的收集器,那么它就像检查线程未完成或队列不为空一样简单。

如果您的工作人员看不到收集器状态,甚至看不到收集器的数量,您可以让收集器在队列本身中与数据一起传达该状态。

假设数据对象有一个原始字段和一个标记为打开或关闭的布尔字段。例如,收集器 1 会发送如下内容:

data-1-opened, data-1-opened ... data-1-closed.

工作人员只需要维护一组收集器 ID,在出现时添加新条目,并在关闭时删除它们。所以退出条件是集合为空且数据队列为空。