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

标签 python macos caching tree directory

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

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

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

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

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

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

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

最佳答案

你看过Redis了吗? ?它速度快,并且与 Python 配合得很好。另外,为了更快地进行搜索,在 fork 处启动的多个线程/进程怎么样?

redis-py

关于用于缓存文件夹、文件和大小的 Python 高效结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782475/

相关文章:

macos - OSX 上的 cp 和 ditto 命令有什么区别?

python - 获取数组不同部分的唯一值

python - 如何在保留 Python 中的采样频率的同时更改 wav 文件的速度

objective-c - 更改空间后不显示 NSWindow 翻转动画

在 OS X 中编译 C 文件

linux - 同一处理器上两个内核之间的缓存一致性问题

python pandas 根据年龄选择值

python - 计算python中每n行数据帧的最大值/最小值

javascript - 将时间戳附加到 Ajax URL GET

php - 操作码缓存实际上是如何工作的?