我正在从Windows计算机上对网络驱动器(NAS上的CIFS共享)执行重型glob操作。 (CPython,v2.7.6)
文件夹" Project"包含1到15个840个文件和1232个文件夹。
(我用的是递归调用os.listdir()的glob模块)
以下脚本在IDLE中加载,我正在执行"运行模块"多次
import timeit
import glob
globPath = u'Z:/Project/*/*/*/*'
def native_glob():
glob.glob(globPath))
print timeit.timeit(native_glob, number=1)
第一次致电:
>>> 64.4641505602
下一个和所有其他电话(+ - .5秒):
>>> 2.07747177124
(该命令返回4125个文件)
第一次通话高度依赖于网络充电,它在100秒到40秒的范围内,但随后的呼叫总是大约2秒。
看起来这背后有一个缓存机制。
答案 0 :(得分:1)
Python不对os.listdir()
次调用进行任何缓存,这完全取决于Windows。
任何网络目录列表在缓存之前都会很慢,远程网络共享驱动器上的文件夹列表也不例外。