标签: python multithreading file-io queue python-multiprocessing
我有四个队列,每个队列都有多个进程/线程,它们以下列方式相互依赖:
我希望这4个队列尽可能并行运行,但需要注意的是队列2必须等待队列1至少放置一个进程/线程(同样队列2必须将项目放在队列中3,队列3在4)。
Python的最佳实现方式是什么(队列和线程/流程实现)?
如果我使用线程,队列2和队列3会因为GIL而相互阻塞吗?我读到I / O和计算仍然可以并行发生,所以即使Queue 1/2/4可以并行工作,我也没问题,队列3与队列2是顺序的。
答案 0 :(得分:1)
您是否真的需要将这4个步骤中的每一个都作为单独的线程/进程?我个人只是在一个函数/可调用类中实现所有4个步骤,然后使用multiprocessing.Pool的映射在感兴趣的文件名上并行调用函数。
此Q& A中讨论的此类模式(仅读取和处理)的更简单示例。正如答案所指出的,如果它似乎是I / O而不是处理的瓶颈,那么只需在池中创建更多进程。