我正在写一个 python 包。我正在使用插件的概念——其中每个插件都是 Worker 类的特化。每个插件都被编写为一个模块(脚本?)并在一个单独的进程中生成。
由于插件之间的基本通用性(例如,都扩展了基类“Worker”),插件模块通常如下所示:
import commonfuncs
def do_work(data):
# do customised work for the plugin
print 'child1 does work with %s' % data
在 C/C++ 中,我们有 include guards,它可以防止 header 被多次包含。
我是否需要在 Python 中使用类似的东西?如果需要,我如何确保 commonfuncs 不会被多次“包含”?
最佳答案
不用担心:只有在程序执行过程中第一次 import
模块才会被加载。在第一个导入之后的每个进一步导入都只是从“缓存”字典(sys.modules
,由模块名称字符串索引)获取模块对象,因此它非常快和没有副作用。因此,不需要守卫。
关于python - 一个包中的多个模块导入一个公共(public)模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950557/