Я пишу пакет Python. Я использую понятие плагинов - где каждый плагин является специализацией класса Рабочего. Каждый плагин записан как модуль (сценарий?) и порожденный в отдельном процессе.
Из-за основной общности между плагинами (например, все расширяют базовый класс 'Рабочий'), сменный модуль обычно похож на это:
import commonfuncs
def do_work(data):
# do customised work for the plugin
print 'child1 does work with %s' % data
В C/C++ мы имеем, включают защиту, которая препятствует тому, чтобы заголовок был включен несколько раз.
Мне нужно что-то как этот в Python, и если да, как я могу удостовериться, что commonfuncs не 'включен' несколько раз?
Не беспокойтесь: только первый импорт
модуля в ходе выполнения программы вызывает его загрузку. Каждый последующий импорт после этого первого просто извлекает объект модуля из словаря "кеша" ( sys.modules
, индексируется строками имени модуля), и поэтому он выполняется очень быстро и без побочные эффекты. Следовательно, в охране не требуется.