Python - 加速进口?

时间:2011-05-17 02:36:16

标签: python

我有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个)模块,您将采取哪些步骤来优化这种情况?

1 个答案:

答案 0 :(得分:3)

我首先要问的是import是否真的是您想要用来访问数千个代码片段的技术 - 完整的导入过程非常昂贵,并且加载(非共享)动态模块根本不是'特别便宜。

其次,你清楚地写下的代码并不是你实际做的。 import语句在运行时不接受字符串,您必须使用importlib.import_module()或直接调用__import__()

最后,优化此操作的第一步是确保sys.path上的第一个目录是包含所有这些文件的目录。您可能还希望使用-vv标志运行Python以拨打导入尝试的详细程度。请注意,如果你进行了那么多的进口,这将会非常嘈杂。