2012-05-11 1 views
1

У меня есть некоторые маринованные данные, которые хранятся на диске и размером около 100 МБ.Обмен данными в Python

Когда моя программа python выполнена, выбранные данные загружаются с использованием модуля cPickle, и все это отлично работает.

Если я выполняю python несколько раз, используя, например, python main.py, каждый процесс python будет загружать одни и те же данные несколько раз, что является правильным поведением.

Как я могу это сделать, все новые процессы python обмениваются этими данными, поэтому он загружается только один раз в память?

ответ

2

Если вы работаете в Unix, одна из возможностей - загрузить данные в память, а затем использовать сценарий os.fork(), чтобы создать кучу подпроцессов. Пока подпроцессы не пытаются изменить данные, они автоматически разделили бы его родительскую копию без использования дополнительной памяти.

К сожалению, это не будет работать в Windows.

P.S. I once asked о размещении объектов Python в разделяемой памяти, но это не создавало никаких простых решений.

+1

* «автоматически распределяет данные родительского процесса без использования дополнительной памяти» * не 100% истина. Это будет копирование на запись, поэтому он скопирует и будет использовать дополнительную память, как только вы собираетесь получить доступ к этим данным для изменения. – vartec

0

В зависимости от того, насколько серьезно вам необходимо решить эту проблему, вы можете захотеть взглянуть на memcached, если это не перебор.

 Смежные вопросы

  • Нет связанных вопросов^_^