[Python-es] ¿Deadlock en multiprocessing?

Chema Cortes pych3m4 en gmail.com
Lun Mar 3 15:51:29 CET 2014


El 2014-03-03 11:23 GMT+01:00 Daπid <davidmenhur en gmail.com>:
> 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()

En el código que pones en pastebin no aparece esta línea, y parece ser
precisamente el problema de todo.


>   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.
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es


Más información sobre la lista de distribución Python-es