У меня есть итератор (userEnvironments
), который содержит много объектов пользовательской среды, которые я хочу для создания словаря, содержащего environment.name
, в качестве ключа и нового объекта EnvironmentStore
, который будет использовать environment
.Самый оптимизированный способ создания объектов из огромного набора объектов
for environment in userEnvironments:
set_cache(user,environment)
def set_cache(user, environment):
_environments_cache[environment.name] = EnvironmentStore(user, environment)
Эффективность памяти здесь не важна, но создание всех этих объектов займет примерно 4 секунды.
Итак, вопрос в том, что было бы хорошим подходом в python, который мог бы создавать объекты только по требованию (как в, создает объекты, когда другой метод хочет вызвать класс), подобный генератору?
Что здесь занимает время, создавая «EnvironmentStore» или итерируя «пользовательские среды»? Вы не можете генерировать ключевые поисковые запросы по генератору, но вы * можете * отложить создание «EnvironmentStore», если вы только сохранили исходный объект «среда». –
Это слишком расплывчато. –
@ Предложение Martijn тоже пришло мне в голову; создайте пользовательский словарь (например, подкласс MutableMapping), который хранит «среду» в наборе, но строит «EnvironmentStore» с ним только при получении (вы можете кэшировать последний, так что он создается только один раз). – jonrsharpe