Я создаю словарь из удаленной базы данных как часть моего запуска приложения. Этот процесс довольно тяжелый для ввода-вывода, поэтому я решил создать экземпляр «singleton» этого словаря и просто назвать его так, как это необходимо в моем приложении.Почему модуль python действует как одноэлементный?
Код выглядит как (в Dictionaries.py
):
state_code_dict = None
def get_state_code_dict():
global state_code_dict
if state_code_dict == None:
state_code_dict = generate_state_code_dict()
return state_code_dict
Я тогда импорт и вызвать функцию get_state_code_dict()
, где это необходимо. Я добавил заявление на печать, чтобы проверить, была ли повторная инициализация или повторное использование state_code_dict
, и я обнаружил, что он используется повторно (это функциональность, которую я хочу). Почему экземпляр state_code_dict
выживает при запуске приложения?
Редактировать
импортировать функцию get_state_code_dict
в нескольких файлах.
потому что импортированный код выполняется только в первый раз? – KurzedMetal
отредактирован для уточнения: я импортирую код в нескольких местах (несколько файлов включают функцию 'get_state_code_dict'. –
Импорт кода, который уже загрузил интерпретатор, по умолчанию не будет повторно загружать этот код.Можно преднамеренно перезагрузить модуль, но если вам нужно это делать по какой-либо причине, кроме как из-за того, что фактический код модуля мог быть изменен во время выполнения, вам, вероятно, следует использовать иную иную программирование, чтобы делать то, что вы хотите сделать. –