Solía multiprocesamiento pitón y hago espera de todos los procesos con este código:pitón piscina multiprocesamiento, esperar a que los procesos y reiniciar encargo procesa
...
results = []
for i in range(num_extract):
url = queue.get(timeout=5)
try:
print "START PROCESS!"
result = pool.apply_async(process, [host,url],callback=callback)
results.append(result)
except Exception,e:
continue
for r in results:
r.get(timeout=7)
...
intento utilizar pool.join pero consigue el error:
Traceback (most recent call last):
File "C:\workspace\sdl\lxchg\walker4.py", line 163, in <module>
pool.join()
File "C:\Python25\Lib\site-packages\multiprocessing\pool.py", line 338, in joi
n
assert self._state in (CLOSE, TERMINATE)
AssertionError
¿Por qué unir no funciona? Y cuál es la mejor manera de esperar todos los procesos.
Mi segunda pregunta es ¿cómo puedo reiniciar cierto proceso en el grupo? Necesito esto en razón de la pérdida de memoria. Ahora, de hecho, reconstruyo todo el grupo después de que todos los procesos realizaron sus tareas (crear un nuevo conjunto de objetos para reiniciar el proceso).
Lo que necesito: por ejemplo, tengo 4 procesos en el grupo. Luego, procese su tarea, una vez que la tarea finalice, necesito eliminar el proceso y comenzar de nuevo (para actualizar la fuga de memoria).
¿por qué 'multiprocessing/pool.py' vive en' site-packages' y no directamente en 'Lib'? Si has estado pirateando, entonces necesitamos saber algo. – aaronasterling
hmm .. no sé, lo instalo con el instalador de windows ... obtenido en el sitio oficial ... – Evg
tengo python2.5 – Evg