Передача объектов python через интерпретаторы

#python #multithreading

#python #многопоточность

Вопрос:

Я хотел бы обмениваться объектами между двумя интерпретаторами python, работающими на одних и тех же (и разных) машинах.

Существует ли механизм для достижения того же самого?

~Виджай

Чтобы быть более конкретным: у меня есть несколько процессов, запущенных на одном (и разных) компьютере (ах). Некоторые из этих процессов создают объекты, которые используются другими процессами. Я пытаюсь решить проблему производителя / потребителя среди этих процессов.

Ранее я запускал эти процессы в том же интерпретаторе python, что и потоки, и смог использовать очереди для решения проблемы производителя-потребителя. Однако из-за увеличения нагрузки я решил перенести некоторые процессы на другие машины. Теперь эти процессы, находящиеся на разных машинах (и интерпретаторах), должны совместно использовать доступ к очереди. Я хотел бы знать, существует ли механизм, который помогает мне делать это эффективно.

Я мог бы написать единый класс, который управляет очередью и обрабатывает объекты в / из других процессов с использованием сокетов.

Я думаю, что это распространенная проблема, если кто-то хочет использовать python для обработки больших объемов данных. Поэтому мне было интересно узнать, есть ли другие, более элегантные решения.

~Виджай

Комментарии:

1. Первое, что вам следует сделать, это поиск способов сериализации объектов Python. Второе, что вам следует сделать, это фактически прочитать результаты Google, которые вы найдете. После прочтения этих результатов, пожалуйста, обновите свой вопрос, чтобы он был более конкретным.

Ответ №1:

Как правило, вам необходимо сериализовать объект. В Python это означает «собирать» и «не разбирать». Вы можете выделить объект с одной стороны, перенести его каким-либо образом (сокет и т.д.) На другую и удалить его. Используйте для этого модули pickle или cPickle .

Пакет Pyro — это полный пакет, который делает это прозрачным способом.

Ответ №2:

Используйте модуль pickle в Python для сериализации / десериализации состояния объекта:

http://docs.python.org/library/pickle.html