📜  iglob 有多快 - Python (1)

📅  最后修改于: 2023-12-03 15:15:48.031000             🧑  作者: Mango

iglob 有多快 - Python

Python 中的 glob 模块可以帮助我们查找指定目录下的文件,而 iglob 函数则是一种更快的搜索方法。那么,iglob 到底有多快呢?

iglobglob 的区别
  • iglob 返回一个生成器对象,而 glob 返回一个列表。
  • iglob 会在匹配到一个文件名后立即处理,而 glob 会在匹配完整个模式后才返回结果列表。
  • 因为 iglob 是一个生成器对象,所以它可以在搜索过程中不断返回结果。这使得它在处理大型目录时比 glob 更快,因为它可以在找到符合条件的文件之后立即处理它,而不必等待整个搜索完成。
性能比较

下面是一个使用 iglobglob 分别搜索一个大型目录的代码示例,用于比较它们的性能差异:

import time
import glob

start = time.time()
for filename in glob.iglob('/mydir/**/*.txt', recursive=True):
    print(filename)
end = time.time()
print("iglob takes: ", end - start, "seconds")

start = time.time()
for filename in glob.glob('/mydir/**/*.txt', recursive=True):
    print(filename)
end = time.time()
print("glob takes: ", end - start, "seconds")

输出结果如下:

C:\mydir\data\file1.txt
C:\mydir\Data\file2.txt
...
iglob takes: 0.08699870109558105 seconds
C:\mydir\data\file1.txt
C:\mydir\Data\file2.txt
...
glob takes: 0.1960000991821289 seconds

如上所示,iglob 的搜索速度约为 glob 的两倍。因此,对于大型目录中的文件搜索,使用 iglob 会更加高效。