我想知道在顺序和并行读取文件之间的权衡.
假设我有一个百兆字节大小的文件,我想要处理,但没有足够的内存来同时保存所有这些文件.为了顺序处理这些,我可以这样做:
results = [do_something(os.path.join(files,f)) for f in os.listdir(files)]
或者我可以并行完成:
paths = [os.path.join(files,f) for f in os.listdir(files)]
p = multiprocessing.Pool()
try:
results = p.map(do_something,paths)
p.close()
p.join()
except KeyboardInterrupt:
p.terminate()
一般来说,我被警告不要执行并行I / O,因为随机磁盘读取速度很慢.但在这种情况下是平行的方式去?或者也许是一些混合策略?
另外,我注意到并行版本保留了目录的结构;也就是说,输出的顺序正确.这是否意味着它实际上是顺序执行,还是python只是善良?编辑:Blender清除了第二个问题.谢谢,搅拌机!
谢谢您的帮助.
最佳答案