当预期有数千万个文件时,递归地收集给定根目录的路径

时间:2013-05-12 16:31:04

标签: java python

我需要在给定的根目录下创建文件路径列表/列表, 当我希望这个目录下的文件数量达到数千万时。

这样做有什么好方法?

我目前运行的是运行os.walk多线程的python脚本。

有什么更好的方法来实现我的需求?

应该注意的是,它是一个安装了nfs的驱动器。

1 个答案:

答案 0 :(得分:0)

似乎os.walk是生成函数:

>>> import os
>>> os.walk(".")
<generator object walk at 0x100f32f00>

是什么让它成为你案件的好候选人。

多线程解决方案可能不会产生性能优势,因此我建议将其转换为某些better concurrent python library(如内置multiprocessing)。

生成进程的拆分作业算法可能是系统中最关键的部分,应该仔细调整。

由于目录位于远程系统上,因此可以更快地在远程系统上运行脚本,并使远程应用程序声音也合理。

像@javadeveloper建议的那样,你也可以测试解决方案:调用OS列表目录函数(ls / find / dir)+用shell语言编写脚本(bash,DOS)或者将输出重定向到文件/流+用脚本语言解析它(比如python)。