Ami*_*ash 4 python parallel-processing shelve multiprocessing
我有一个程序,它需要一个非常庞大的输入文件,并从中产生一个字典.由于这不适合内存,我决定使用shelve将其写入我的磁盘.现在我需要利用我的系统中的多个核心(其中8个),这样我就可以加快解析速度.我认为最明显的方法是将输入文件分成8个部分,同时在所有8个部分上运行代码.问题是我最后只需要一本字典.不是8个.那么如何使用shelve并行更新单个字典呢?
我在这里给出了一个非常详细的答案,处理来自python中多个进程的单个文件
不要试图弄清楚如何让多个进程一次写入搁架.想想你如何让一个过程将结果传递到货架上.
这个想法是你有一个进程产生队列的输入.然后,您可以拥有尽可能多的工作人员来接收排队的项目并完成工作.完成后,他们将结果放入结果队列中以便读取接收器.好处是您不必提前手动拆分工作.只需生成"输入",让任何工作人员阅读并接受它.
使用此模式,您可以根据系统功能放大或缩小工作人员.