首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在目录树上进行多线程递归遍历的好方法是什么?

问在目录树上进行多线程递归遍历的好方法是什么?
EN

Stack Overflow用户
提问于 2012-08-14 13:09:56
回答 2查看 1.1K关注 0票数 3

我正在考虑一种对目录树进行多线程递归遍历的好方法。

我现在要做的是将文件夹放在根目录下,并在单独的线程中对每个文件夹运行递归遍历。

这改善了相当多的性能,但我仍然有一个“长尾”的问题-大文件夹花了很多时间。

有什么办法比这更好呢?

为此,我使用python和java。

谢谢。

编辑:我不需要将文件加载到记忆中。只需处理文件路径并可能获取一些元数据信息,如文件大小。

EN

回答 2

Stack Overflow用户

发布于 2012-08-14 13:41:07

这是错误的方法,因为您不知道目录节点的深度和大小。即使您知道,迭代本身在目录树上的也不会通过在多个线程中执行而加速。您想要做的是在单个线程中遍历目录,并将您在文件/目录上所做的工作提交给ExecutorService。还请参见遗嘱执行人

票数 0
EN

Stack Overflow用户

发布于 2012-08-14 14:05:10

那么,严格地回答多线程问题,您可以想出一些规则,以便在递归中分离出新的线程,例如,每个均匀填充的深度都被分割成线程。在Python-esque伪代码中观察:

代码语言:javascript
复制
depth = 0
while true:
    subDirCount = countSubDirs()
    if subDirCount = 0:
        break
    else:
        if depth % 2 = 0:
            for dir in subDirs:
                newThread(dir)
        else:
            for dir in subDirs:
                recurse(dir)

现在,这个解决方案并不能处理您在使用螺纹安全时遇到的可怕时刻。这是一个很好的设置,不稳定的异步返回,你将得到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11952989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档