Python:相互依赖的进程/线程队列

时间:2014-12-16 22:29:56

标签: python multithreading file-io queue python-multiprocessing

我有四个队列,每个队列都有多个进程/线程,它们以下列方式相互依赖:

  1. 队列1正在从磁盘读取文件并复制到RAM
  2. 队列2将文件存入RAM并对其执行操作
  3. 队列3获取队列2的结果并对其执行单独的操作
  4. 队列4将最终结果写回磁盘
  5. 我希望这4个队列尽可能并行运行,但需要注意的是队列2必须等待队列1至少放置一个进程/线程(同样队列2必须将项目放在队列中3,队列3在4)。

    Python的最佳实现方式是什么(队列和线程/流程实现)?

    如果我使用线程,队列2和队列3会因为GIL而相互阻塞吗?我读到I / O和计算仍然可以并行发生,所以即使Queue 1/2/4可以并行工作,我也没问题,队列3与队列2是顺序的。

1 个答案:

答案 0 :(得分:1)

您是否真的需要将这4个步骤中的每一个都作为单独的线程/进程?我个人只是在一个函数/可调用类中实现所有4个步骤,然后使用multiprocessing.Pool的映射在感兴趣的文件名上并行调用函数。

Q& A中讨论的此类模式(仅读取和处理)的更简单示例。正如答案所指出的,如果它似乎是I / O而不是处理的瓶颈,那么只需在池中创建更多进程。