Синглтон Python для многопроцессорной обработки
-
12-09-2019 - |
Вопрос
Как я могу запрограммировать использование одного и того же экземпляра «синглтонного» класса среди процессов?
Решение
Лучше всего назначить один конкретный процесс, владеющий этим экземпляром и посвященный ему;любой другой процесс, требующий доступа к этому экземпляру, получает его путем отправки сообщений процессу-владельцу через очередь (как предоставляется модулем многопроцессорной обработки) или другие механизмы IPC для передачи сообщений и получает ответы обратно через аналогичные механизмы.
Другие советы
Вся суть процессов в том, чтобы иметь разные адресные пространства.Если вы хотите обмениваться информацией между процессами, вы должны использовать некоторые средства межпроцессного взаимодействия.
В Python 2.6 multiprocessing
модуль имеет Value
объект, используемый для совместное использование состояния между процессами.У них есть пример кода, который должен дать вам представление о том, как таким образом делиться состоянием, и вы можете использовать этот подход при написании одноэлементного класса.
Я не думаю, что вы можете разделить экземпляр между процессами, но вы можете предоставить экземпляру доступ к общей памяти: http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes контролировать его состояние, если это действительно то, что вы хотите сделать.
Однако, как указано в других ответах, возможно, будет проще добиться того, чего вы хотите, с помощью очереди.