0

我需要在某些文件夹中找到所有 git 存储库。以前,我使用find . -type -d -name .git. 现在我用 Python 3 重写了它并使用os.walk. 它似乎比简单的遍历树需要更长的时间find

我怎样才能加快速度?

这是完整的代码:旧的 新的

4

2 回答 2

4

SO上有很多线程os.walk(),它非常慢。

  • 你可能对scandir感兴趣(不知道是否还适用于python3)
  • 与其遍历整个树并过滤“.git”,不如成为一个好人并使用glob-module直接找到它们。
于 2013-09-02T19:21:15.220 回答
1

如果您的意思是 的实现find_repos(),那么 usingos.walk()可能不是最佳的。原因是一旦找到.git子目录,就不需要再深入搜索了。尝试编写自己的目录遍历。您可以查看os.py有关如何实现的来源——缓慢walk的原因可能是它是用 Python 编写的。

对于您的新解决方案的其他部分...我注意到您没有编译正则表达式,但我没有检查详细信息。

我建议将功能分离到另一个 Python 脚本中,然后使用timeit模块测量解决方案,然后尝试优化。

于 2013-09-03T11:33:45.220 回答