Синглтон Python для многопроцессорной обработки

StackOverflow https://stackoverflow.com/questions/1109870

  •  12-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top