Multiproceso de salida condicional en python
Frecuentes
Visto 159 veces
1
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()
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python-2.7 multiprocessing or haz tu propia pregunta.