优先考虑Greenlet worker以进行并行读/写/ db访问

时间:2014-04-22 10:14:46

标签: python multithreading mongodb parallel-processing gevent

我需要读取每个大小为10gb的3个csv文件,并将文件的一部分写入另外3个文件。在中间,涉及一些小的条件,并且每行都有一个mongo查询(6bil集合,正确索引)。

我在考虑使用Gevent池来完成任务,但我不确定如何优先处理读取任务而不是写入,确保在编写器退出之前完成读取。

我也不想阻止编写器,直到读完为止。

  • 我可以产生3个将放入队列的读者。
  • 我可以产生20-25个io处理器,它们将从队列中读取,进行mongodb调用和写入 写作队列。
  • 然后我可以产生3个从写入读取的写入器 队列并写入文件。
  • 然后,我可以在游泳池上进行连接。

现在我可以在io处理器和编写器中保持队列超时。但这会确保我的所有读者都将完整的数据放入队列吗?或者是否可以在io-processors的末尾加入我的读者?

简而言之,我想了解是否有任何可以用来有效执行任务的最佳方法。

0 个答案:

没有答案