17.2.6.10 导入工具缓存
每次导入一个模块时都要搜宿舍所有hook,这样可能很耗费时间。为了节省时间,会维护一个sys.path_importer_cache,作为路径入口与加载工具(可以使用值查找模块)之间的一个映射。
import os
import sys
prefix = os.path.abspath(sys.prefix)
print('PATH:')
for name in sys.path:
name = name.replace(prefix,'...')
print(' ',name)
print()
print('IMPORTERS:')
for name, cache_value in sys.path_importer_cache.items():
if '..' in name:
name = os.path.abspath(name)
name = name.replace(prefix,'...')
print(' {}:{!r}'.format(name,cache_value))
使用一个FIleFinder来标识文件系统上找到的路径位置。对于所有查找工具都不支持的路径,其中的位置与一个None值关联,以为内它们不能用来导入模块。以下输出显示了缓存导入,不过由于版面限制,这里做了删减。