2014-03-03 22:19 GMT+01:00 Chema Cortes <[email protected]>: > > OK. Creo que has hecho un planteamiento demasiado optimista. El > proceso "saver" entra a funcionar antes de los jobs generadores, por > lo que es posible que termine sin haber procesado todos los datos, > bloqueándose el hilo principal por quedar datos en la cola. >
El proceso real crea el fichero en el que va a guardar los datos, y no termina hasta que recibe un None, en cuyo caso sólo tiene que cerrar el archivo y terminar casi inmediatamente. Por otro lado, estás usando una librería externa para HDF5 que podría > estar descontrolando el GIL del intérprete. Prueba a usar el backend > "threading" a ver si mejora. > > https://pythonhosted.org/joblib/parallel.html#using-the-threading-backend > En mi caso, eso no es una opción. El cálculo tira mucho de CPU, y necesito hacer uso de los ocho núcleos que tengo. Cierto es que la parte "dura" del cálculo está en Cython y podía ejecutarla con nogil. Lo que estoy haciendo ahora es simplemente poner los resultados en memoria y guardarlos todos seguidos al final. Por otro lado, convertir el proceso "saver" en un thread es probablemente una buena idea. Lo sospechoso es que en la mayoría de los casos, funciona. Si estuviera haciendo algo mal, debería fallar siempre; no funcionar para ciertos conjuntos de datos y fallar para otros muy similares. Huele a bug en Python, pero no estoy seguro.
_______________________________________________ Python-es mailing list [email protected] https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
