У меня есть очень большой словарь размером ~ 200 ГБ, который мне очень часто нужно запрашивать для моего алгоритма. Чтобы получить быстрые результаты, я хочу поместить его в память, что возможно, потому что, к счастью, у меня 500 ГБ оперативной памяти.Как сохранить очень большой словарь, загруженный в память в python?
Однако основная проблема заключается в том, что я хочу загрузить его только один раз в памяти, а затем позволить другим процессам запрашивать один и тот же словарь, а не загружать его каждый раз, когда я создаю новый процесс или перебираю свой код.
Итак, я хотел бы что-то вроде этого:
Сценарий 1:
# Load dictionary in memory
def load(data_dir):
dictionary = load_from_dir(data_dir) ...
Сценарий 2:
# Connect to loaded dictionary (already put in memory by script 1)
def use_dictionary(my_query):
query_loaded_dictionary(my_query)
Какой самый лучший способ для достижения этой цели? Я рассмотрел API-интерфейс для отдыха, но мне интересно, может ли прохождение запроса REST подорвать всю скорость, которую я получил, поставив словарь в память в первую очередь.
Любые предложения?
Возможно, использование чего-то вроде redis было бы полезным. –
Да, redis - тоже хорошая идея. Мне было интересно, есть ли способ сделать это в python. Я ранее пытался mongodb, но последняя версия wongtiger mongodb, не имеет возможности предварительно загрузить все данные в памяти. Проблема в том, что у меня нет пароля root, поэтому я не хотел устанавливать слишком много программного обеспечения. Но позвольте мне попробовать redis. –
Вы пытаетесь заново изобрести базы данных NOSQL? Почему бы не полагаться на существующие? –