Pregunta

¿Cómo puedo codificar para compartir la misma instancia de una clase "singletonic" entre los procesos?

¿Fue útil?

Solución

Lo mejor es designar a un proceso específico como ser dueño de esa instancia y dedicado a ella; cualquier otro proceso que requiere el acceso a esa instancia obtiene mediante el envío de mensajes al proceso propietario a través de una cola (suministrada por el módulo de multiprocesamiento) u otros mecanismos IPC para el paso de mensajes, y obtiene respuestas de vuelta a través de mecanismos similares.

Otros consejos

El objetivo de los procesos es tener espacios de direcciones diferentes. Si desea compartir información entre procesos debe utilizar algún medio de comunicación entre procesos .

En Python 2.6 el módulo multiprocessing tiene un objeto Value utilizado para compartir el estado entre los procesos . Tienen un ejemplo de código que debe darle una idea de cómo compartir el estado de esta manera, y se puede utilizar este método cuando se escribe una clase Singleton.

No creo que se pueda compartir la instancia entre los procesos, pero se puede tener acceso a la memoria compartida ejemplo: http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes para controlar su estado si eso es realmente lo que quieres hacer.

Sin embargo, como se ha dicho en otras respuestas, que podría ser más fácil de lograr lo que desea con una cola.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top