[Python-es] ¿Deadlock en multiprocessing?
Daπid
davidmenhur en gmail.com
Lun Mar 3 11:23:07 CET 2014
Hola:
Tengo un programa que genera ciertos datos en paralelo y los pone en una
cola para ser guardados en un archivo HDF5. Parece funcionar bien, pero de
vez en cuando, el proceso se atasca. Aquí el código:
http://pastebin.com/MuTKBzk8
Y aquí lo que escupe el programa:
[Parallel(n_jobs=-1)]: Done 1771 out of 1771 | elapsed: 1.4min finished
Remaining 1497 . Waiting for saving.
# Después de varios días, cancelo:
^CTraceback (most recent call last):
File "generate_transforms.py", line 234, in <module>
Process Process-1:
Traceback (most recent call last):
File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in
_bootstrap
self.run()
File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "generate_transforms.py", line 141, in save_wavelet
q.join()
File "/usr/lib64/python2.7/multiprocessing/queues.py", line 340, in join
val = q.get()
File "/usr/lib64/python2.7/multiprocessing/queues.py", line 117, in get
self._cond.wait()
File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 246, in
wait
res = self._recv()
KeyboardInterrupt
self._wait_semaphore.acquire(True, timeout)
KeyboardInterrupt
Closing remaining open
files:./82593_lv_mcx_DIA_5mz_525to650/raw/82593_lv_mcx_DIA_5mz_525to650.h5...done
El proceso de guardado es tan rápido que, cuando no se ha atasca, para el
momento en el que pregunto el tamaño de la cola, ya está vacía; pero cuando
sí se atasca, parece quedarse bloqueada. ¿Alguna idea de por qué ocurre? Lo
más extraño es que no es determinista, sólo pasa a veces. Estoy en Linux
usando Python 2.7.
/David.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140303/773fc5bd/attachment.html>
Más información sobre la lista de distribución Python-es