我正在编写应具有以下结构的代码:
有人可以给我一些关于如何做这样的事情的代码/伪代码。主要是我应该使用什么样的缓冲区&线程如何通信,以便正确地收集和处理所有数据。
我已经阅读过" Queue"和"线程" python中的类。但是,我仍然不确定如何正确地做到这一点。我已尝试使用threading.Event()对象的多个简单示例 - 但结果不一致。
非常感谢!
答案 0 :(得分:0)
如果您的工作人员可以看到收集器已完成,那么它就像在线程未完成时检查一样简单,或者队列不为空。
如果您的工作人员看不到收集者的状态,甚至看不到收集者的数量,您可以让收集者沿着数据在队列中传达该状态。
想象一下,数据对象有一个原始字段,以及一个标记为打开或关闭的布尔字段。例如,收集器1将发送类似:
的内容data-1-opened, data-1-opened ... data-1-closed.
工作者只需要维护一组收集器ID,在它们出现时添加新条目,并在关闭时删除它们。因此退出条件是set为空且数据队列为空。