Python синглтон в многопроцессорной - PullRequest
5 голосов
/ 10 июля 2009

Как я могу написать код для совместного использования одного и того же экземпляра "синглтонического" класса между процессами?

Ответы [ 4 ]

5 голосов
/ 10 июля 2009

Лучше всего назначить один конкретный процесс как владелец этого экземпляра и выделенный ему; любой другой процесс, требующий доступа к этому экземпляру, получает его, отправляя сообщения процессу-владельцу через очередь (как предусмотрено многопроцессорным модулем) или другие механизмы IPC для передачи сообщений, и получает ответы обратно с помощью аналогичных механизмов.

5 голосов
/ 10 июля 2009

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

2 голосов
/ 10 июля 2009

В Python 2.6 модуль multiprocessing имеет объект Value, используемый для общего состояния между процессами . У них есть пример кода, который должен дать вам представление о том, как делить состояние таким образом, и вы можете использовать этот подход при написании одноэлементного класса.

1 голос
/ 10 июля 2009

Я не думаю, что вы можете совместно использовать экземпляр между процессами, но вы можете иметь доступ к общей памяти экземпляра: http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes для контроля его состояния, если это действительно то, что вы хотите сделать.

Однако, как указано в других ответах, с помощью очереди может быть проще достичь того, чего вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...