Шаблон singleton идеально подходит для подобных ситуаций. В Python вы бы реализовали это примерно так:
class MySingleton(object):
__instance = None
def __init__(self):
if self.__class__.__instance:
raise Exception, """
Tried to allocate a second instance of a singleton.
Use getInstance() instead.
"""
self.__class__.__instance = self
@classmethod
def getInstance(cls):
if not cls.__instance:
cls()
return cls.__instance
Затем вы можете импортировать модуль, как обычно, и использовать MySingleton.getInstance (), чтобы получить экземпляр класса. Внутри данного приложения вы гарантированно получите один и тот же экземпляр.
РЕДАКТИРОВАТЬ: Другие отметили модуль logging , и я согласен с ними, что использование этого, вероятно, лучший вариант, чем написание вашего собственного регистратора. Однако, если вам по какой-либо причине необходимо написать собственный регистратор, возможно, вы захотите использовать приведенный выше шаблон.