一个包中的几个模块导入一个公共模块

时间:2010-06-01 14:21:55

标签: python

我正在写一个python包。我正在使用插件的概念 - 其中每个插件都是Worker类的特化。每个插件都是作为模块(脚本?)编写的,并在单独的进程中生成。

由于插件之间的基本共性(例如,所有扩展基类'Worker'),插件模块通常如下所示:

import commonfuncs

def do_work(data):
    # do customised work for the plugin
    print 'child1 does work with %s' % data

在C / C ++中,我们提供了防护措施,可以防止标题被多次包含。

我是否需要Python中的类似内容,如果是,我怎样才能确保commonfuncs不会被“包含”多次?

1 个答案:

答案 0 :(得分:16)

不用担心:在程序执行过程中,只有模块的第一个 import才会导致它被加载。在第一个之后的每个进一步导入只是从“缓存”字典(sys.modules中获取模块对象,由模块名称字符串索引),因此它们非常快没有副作用。因此,没有必要保护。