Pregunta

Mi problema es:

Tengo 3 procs que me gustaría compartir la configuración cargada de la misma clase y un par de colas. Me gustaría generar otro proceso como multiprocessing.manager para compartir esas informaciones.

¿Cómo puedo hacer eso? ¿Alguien podría comprar un código de muestra evitando el uso de variables globales y haciendo uso de la clase de administrador de multiprocesamiento?

Los documentos de Python no fueron tan útiles :-(

¿Fue útil?

Solución

Encontré esta sección particular en la Documentos de multiprocesamiento de Python útiles. El siguiente programa:

from multiprocessing import Process, Queue, current_process
import time

def f(q):
    name = current_process().name
    config = q.get()
    print "%s got config: %s" % (name, config)
    print "%s beginning processing at %s" % (name, time.asctime())
    time.sleep(5)
    print "%s completing processing at %s" % (name, time.asctime())

if __name__ == '__main__':
    q = Queue()
    processes = []
    cfg = { 'my' : 'config', 'data' : 'here' }
    for i in range(3):
        p = Process(target=f, args=(q,))
        processes.append(p)
        p.start()
        q.put(cfg)

    for p in processes:
        p.join()

muestra el script principal (que es el " administrador de multiprocesamiento " en su pregunta) creando 3 procesos y enviándoles a cada uno una configuración (mostrada aquí como un diccionario).

Cada proceso lee la configuración, realiza su procesamiento (aquí, solo duerme durante 5 segundos) y luego termina. El resultado de ejecutar este script es:

Process-1 got config: {'my': 'config', 'data': 'here'}
Process-1 beginning processing at Tue Jun 23 23:34:23 2009
Process-2 got config: {'my': 'config', 'data': 'here'}
Process-2 beginning processing at Tue Jun 23 23:34:23 2009
Process-3 got config: {'my': 'config', 'data': 'here'}
Process-3 beginning processing at Tue Jun 23 23:34:23 2009
Process-1 completing processing at Tue Jun 23 23:34:28 2009
Process-2 completing processing at Tue Jun 23 23:34:28 2009
Process-3 completing processing at Tue Jun 23 23:34:28 2009
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top