用于缓存文件夹、文件和大小的Python高效结构



我正在用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.walke可能需要30多秒,有时需要几分钟。

我知道我不能让它更快地在结构中行走,但我想以某种方式缓存结果,这样在未来它会更快。这是因为该应用程序允许导航树图,在那里你可以点击任何部分(这是一个文件夹),它将使其成为树图的"根"。

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

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

有适合这种结构的好图书馆吗?或者我自己写这篇文章有多容易?我以前从未使用过这样的结构,所以我不知道创建它的最佳方法,以便获得所需的访问类型。

你研究过Redis吗?它的速度很快,并且能很好地与Python配合使用。此外,如果在一个fork上启动多个线程/进程以更快地进行搜索,该怎么办?

redis py

相关内容

  • 没有找到相关文章