我正在用Python编写磁盘空间使用程序,我已经拥有了我想要的功能,但速度很慢。我将分析的文件系统可能是数百GB,在许多深度较大的文件夹中有数千个文件。
我正在使用基于前面链接的纸张中的“分割”布局的树形图显示数据。布局的创建和解决都是非常快速的操作。 http://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2005/rapporter05/engdahl_bjorn_05033.pdf
我正在使用os.walk行走给定的路径,并将文件夹和文件及其大小添加到此树形图中。我得到每个文件的大小,并存储在字典缓存中(缓存[filePath] =大小),所以我可以轻松地再次检索它。所有这一切都很快,除了os.walk。单独运行os.walk可能需要30秒以上,有时需要几分钟。
我知道我不能让它更快地走过这个结构,但我想以某种方式缓存结果,以便将来它更快。这是因为应用程序允许导航树形图,您可以在其中单击任何部分(这是一个文件夹),它将使其成为树图的“根”。
所以,我需要一个缓存解决方案,允许轻松访问任何文件/文件夹,以及在层次结构中轻松导航,这样如果我开始在'根'节点,我可以跳到任何在任何深度指定的孩子,然后从那里我可以在结构中向上(或向下)移动。
我宁愿不将数据结构和导航合并到树形图中。如果解决方案是在程序的步行和大小调整部分中,那将是最好的。最后,我真的只需要对文件/文件夹结构进行可步行的重建。
这种结构的任何好的库?或者自己写这个有多容易?我以前没有使用过这样的结构,所以我不知道创建它的最佳方法,以便我有我需要的访问类型。