顺序或并行:在python中读取多个文件的正确方法是什么?
发布时间:2020-12-16 21:51:48 所属栏目:Python 来源:网络整理
导读:我想知道在顺序和并行读取文件之间的权衡. 假设我有一个百兆字节大小的文件,我想要处理,但没有足够的内存来同时保存所有这些文件.为了顺序处理这些,我可以这样做: results = [do_something(os.path.join(files,f)) for f in os.listdir(files)] 或者我可以
我想知道在顺序和并行读取文件之间的权衡. 假设我有一个百兆字节大小的文件,我想要处理,但没有足够的内存来同时保存所有这些文件.为了顺序处理这些,我可以这样做:
或者我可以并行完成:
一般来说,我被警告不要执行并行I / O,因为随机磁盘读取速度很慢.但在这种情况下是平行的方式去?或者也许是一些混合策略? 另外,我注意到并行版本保留了目录的结构;也就是说,输出的顺序正确.这是否意味着它实际上是顺序执行,还是python只是善良?编辑:Blender清除了第二个问题.谢谢,搅拌机! 谢谢您的帮助. 最佳答案
如果每个文件有多个磁盘访问,则磁盘IO会损害并行处理.但是,如果您在do_something中执行的处理足够少,则可能不值得在线程池中进行上下文切换所需的处理.既然你说do_something非常昂贵,那么它可能值得并行处理.
此外,如果您只是将文件完全读入内存一次,而不是逐行读取文件,则可以最小化磁盘IO.当然这需要更多内存,但它可能会显着缩短处理时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |