Multiproceso de salida condicional en python

Estoy tratando de construir un script de python que ejecute varios procesos en paralelo. Básicamente, los procesos son independientes, funcionan en diferentes carpetas y dejan su salida como archivos de texto en esas carpetas. Pero en algunos casos especiales, un proceso puede terminar con un estado especial (booleano). Si es así, quiero que todos los demás procesos finalicen de inmediato. ¿Cuál es la mejor manera de hacer esto?

He jugado con multiprocessing.condition() y multiprocessing.manager, después de leer el excelente tutorial de Doug Hellmann: http://pymotw.com/2/multiprocessing/communication.html Sin embargo, parece que no entiendo cómo obtener un proceso de multiprocesamiento para monitorear un indicador de estado y salir si toma un valor especial.

Para ejemplificar esto, he escrito el pequeño guión a continuación. De alguna manera hace lo que quiero, pero termina en una excepción. Las sugerencias sobre formas más elegantes de proceder son bienvenidas:

Hermano, Gro

import multiprocessing

def input(i):
    """arbitrary chosen value(8) gives special status = 1"""        
    if i == 8:
        value = 1
    else:
        value = 0
    return value

def sum_list(list):
"""accumulative sum of list"""
    sum = 0
    for x in range(len(list)):
            sum = sum + list[x]
    return sum

def worker(list,i):
    value = input(i)
    list[i] = value
    print 'processname',i

if __name__ == '__main__':
    mgr = multiprocessing.Manager()
    list = mgr.list([0]*20)
    jobs = [ multiprocessing.Process(target=worker, args=(list,i))
                for i in range(20)
        ]
for j in jobs:
    j.start()
    sumlist = sum_list(list)
    print sumlist
    if sumlist == 1:
        break
for j in jobs:
    j.join()

preguntado el 28 de agosto de 12 a las 09:08

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.