我有10000个自定义(编译为'.so')模块,我想在python
中使用。模块的使用将是相应的(模块一个接一个地使用;不是同时使用)。
通常,代码看起来像这样:
# list with all the paths to all modules
listPathsToModules = [.....]
# loop through the list of all modules
for i in xrange(listPathsToModules):
# get the path to the currently processed module
pathToModule = listPathsToModules[i]
# import the module
import pathToModule
# run a function in 'pathToModule' and get the results
pathToModule.MyFunction( arg1, arg2, arg3 )
运行它,这是我找到的:
平均而言导入一个模块所需的时间:0.0024625 [sec]
平均而言运行模块功能所需的时间:1.63727e-05 [sec]
意思是,it takes x100 more time to import the module than to run a function that is in it!
有什么办法可以加快python
加载模块所需的时间吗?鉴于需要加载和运行许多(假设10,000个)模块,您将采取哪些步骤来优化这种情况?
答案 0 :(得分:3)
我首先要问的是import
是否真的是您想要用来访问数千个代码片段的技术 - 完整的导入过程非常昂贵,并且加载(非共享)动态模块根本不是'特别便宜。
其次,你清楚地写下的代码并不是你实际做的。 import语句在运行时不接受字符串,您必须使用importlib.import_module()
或直接调用__import__()
。
最后,优化此操作的第一步是确保sys.path
上的第一个目录是包含所有这些文件的目录。您可能还希望使用-vv
标志运行Python以拨打导入尝试的详细程度。请注意,如果你进行了那么多的进口,这将会非常嘈杂。