Привет!
У меня питоновый проект с кучей модулей. Модули, по сути, не зависят друг от друга - могут импортироваться как угодно или вообще работать в режиме "скрипта". В целом вся работа внутри этих модулей крутится вокруг базы данных. Так вот, когда в каком-то скрипте я хочу использовать много этих модулей то сталкиваюсь с проблемой в виде долгой инициализации всего этого дела - каждый модуль коннектится к базе, вытаскивает всю нужную ему структуру таблиц и так далее. Все бы ничего, только пул коннектов к базе можно было бы и один использовать, а не свой для каждого модуля, таблицы между модулями тоже "пересекаются" и тянуть всю их метадату несколько раз мне совсем не хочется, ну и прочее. В итоге я придумал объявлять все это добро в модулях вот так:
if 'foo' in dir(sys.modules['__main__']):
foo = sys.modules['__main__'].foo
else:
foo = 'bar'
sys.modules['__main__'].foo = foo
Вроде все работает как и ожидается, но выглядит все это очень стремно и грязно. Нормальный ли это вариант или как сделать лучше?
Пусть каждый модуль грузит все что ему нужно - понятно что это самый "правильный" вариант, но мне хочется провести указанную оптимизацию.
Спасибо за советы!