我处于一个单一生产商/多个消费者的情况下。考虑到每个作业是独立的,消费者之间不进行通信。 为每个消费者创建不同的队列是否是一个好主意?
这样,生产者以循环方式在每个队列中添加作业,并且在访问单个队列时没有延迟 还是尽可能减少队列数量更好 对于单个队列和大量消费者(如20个或更多),由于对队列的同步访问而导致的延迟是否相关 我正在使用Python3.7和多线程/多处理创建几个使用者。每个使用者都需要运行一个可执行文件并执行一些I/O操作(写入、移动或复制文件)。我目前已经开发了多处理和单队列,但是我正在考虑改变多线程和多队列的方法 单队列 多队列 Consumer
/
/ ..
Producer --> [ Queue ] -- Consumer
\ ..
\
Consumer
-> [ Queue ] -- Consumer
/
/ ..
Producer ----- -> [ Queue ] -- Consumer
\ ..
\
-> [ Queue ] -- Consumer
特别是在一家生产商的情况下->;对于许多消费者来说,好处是只有一个生产者必须连接到的队列,并且您可以根据您想要处理“下一个项目”的数量增加消费者。因为Python与线程的关系非常复杂,所以我建议使用
asyncio
和asyncio.Queue
。它非常直观,易于使用我最近对这个话题进行了一番探讨,我发现这个gist对于理解它是如何工作的非常有帮助
无论如何,拥有更多的队列可能不会加快处理速度。只有在(处理消息的时间)<;(从队列获取消息),这在您的用例中不是这样的(对于IO任务等)
相关问题 更多 >
编程相关推荐