我需要在给定的根目录下创建一个文件路径列表/列表,当我预计该目录下的文件数量为数千万时。
什么是一个好的和有效的方法来做到这一点?
我目前运行一个运行 os.walk 多线程的 python 脚本。
有什么更好的方法来实现我所需要的吗?
需要注意的是,该目录是一个安装了 nfs 的驱动器。
似乎os.walk是生成器函数:
>>> import os
>>> os.walk(".")
<generator object walk at 0x100f32f00>
是什么使它成为您的理想人选。
多线程解决方案可能不会产生性能优势,因此我建议将其转换为一些更好的并发 python 库(如内置multiprocessing)。
产生进程的拆分作业算法可能是系统中最关键的部分,应该仔细调整。
由于目录位于远程系统上,因此在远程系统上运行脚本肯定会更快,并且使远程应用程序听起来也很合理。
就像@javadeveloper建议的那样,您还可以测试解决方案:调用操作系统列表目录函数(ls/find/dir)+用shell语言(bash,DOS)编写脚本或将输出重定向到文件/流+用脚本语言解析它(如python )。