所以我有2个主要的工作进程,一个应该获取URL的内容和另一个 将每个锚链接插入postgre表。现在我正在跑步 第一个进程的12个实例,所有这些实例都从一个URL队列中获取其URL,然后将锚点放在第二个队列中,但是如何让另一组线程尝试将Anchor推入表中?当我启动线程时,发现他们的队列为空并且他们死了,如果我禁用该功能他们不会在工作完成时死亡,我该如何管理它,顺便说一下,因为大概使用进程而不是线程密集的IO交互涉及?
答案 0 :(得分:1)
你需要两个队列,URLFetchers
将从一个队列中弹出URL并推入第二个队列,然后AnchorInserters
应从第二个队列中弹出以处理数据。该组织应为您的问题提供良好的同步机制。
编辑:避免工人退出
你需要阻止直到一个元素可用。
while True:
element = queue.get(block=True, timeout=None)
#do worker's task
来自python的queue.get
doc ...
如果可选的args块为真,并且 timeout是None(默认值),block 如果有必要,直到一个项目 可用。