3

我正在用 Python 编写一个磁盘空间使用程序,并且我已经拥有了我想要的功能,但是速度很慢。我将分析的文件系统可能是数百 GB,在许多深度密集的文件夹中包含数千个文件。

我正在使用基于前面链接的论文中的“拆分”布局的树形图来显示数据。布局的创建和求解都是非常快速的操作。 http://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2005/rapporter05/engdahl_bjorn_05033.pdf

我正在使用 os.walk 行走给定的路径,并将文件夹和文件连同它们的大小一起添加到这个树图中。我得到每个文件的大小并将其存储在字典缓存中(其中 cache[filePath] = size),因此我可以轻松地再次检索它。所有这些都很快,除了 os.walk。单独运行 os.walk 可能需要 30 多秒,有时是几分钟。

我知道我不能让它更快地通过结构,但我想以某种方式缓存结果,以便将来它更快。这是因为该应用程序允许导航树状图,您可以在其中单击任何部分(这是一个文件夹),它将使其成为树状图的“根”。

所以,我需要一个缓存解决方案,它可以轻松访问任何文件/文件夹,以及在层次结构中轻松导航,这样如果我从“根”节点开始,我可以跳到任何指定的子节点任何深度,然后从那里我可以在结构中向上(或向下)移动。

我宁愿不将数据结构和导航合并到树状图中。如果解决方案是在程序的步行和调整大小部分,那将是最好的。最后,我真的只需要一个可步行的文件/文件夹结构及其大小的重建。

这种结构有什么好的库吗?或者自己写这个有多容易?我以前没有使用过这样的结构,所以我不知道创建它的最佳方法,以便我拥有所需的访问类型。

4

1 回答 1

1

Have you looked into Redis? Its fast, and plays well with Python. Also, what about multiple threads/processes that are initiated at a fork to do the searching faster?

redis-py

于 2012-08-02T17:34:55.757 回答