📅  最后修改于: 2023-12-03 15:15:48.031000             🧑  作者: Mango
iglob
有多快 - PythonPython 中的 glob
模块可以帮助我们查找指定目录下的文件,而 iglob
函数则是一种更快的搜索方法。那么,iglob
到底有多快呢?
iglob
和 glob
的区别iglob
返回一个生成器对象,而 glob
返回一个列表。iglob
会在匹配到一个文件名后立即处理,而 glob
会在匹配完整个模式后才返回结果列表。iglob
是一个生成器对象,所以它可以在搜索过程中不断返回结果。这使得它在处理大型目录时比 glob
更快,因为它可以在找到符合条件的文件之后立即处理它,而不必等待整个搜索完成。下面是一个使用 iglob
和 glob
分别搜索一个大型目录的代码示例,用于比较它们的性能差异:
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
会更加高效。