Несколько модулей в пакете, импортирующем один общий модуль

Я пишу пакет Python. Я использую понятие плагинов - где каждый плагин является специализацией класса Рабочего. Каждый плагин записан как модуль (сценарий?) и порожденный в отдельном процессе.

Из-за основной общности между плагинами (например, все расширяют базовый класс 'Рабочий'), сменный модуль обычно похож на это:

import commonfuncs

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

В C/C++ мы имеем, включают защиту, которая препятствует тому, чтобы заголовок был включен несколько раз.

Мне нужно что-то как этот в Python, и если да, как я могу удостовериться, что commonfuncs не 'включен' несколько раз?

6
задан S.Lott 1 June 2010 в 14:27
поделиться

1 ответ

Не беспокойтесь: только первый импорт модуля в ходе выполнения программы вызывает его загрузку. Каждый последующий импорт после этого первого просто извлекает объект модуля из словаря "кеша" ( sys.modules , индексируется строками имени модуля), и поэтому он выполняется очень быстро и без побочные эффекты. Следовательно, в охране не требуется.

16
ответ дан 8 December 2019 в 14:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: