El día 9 de abril de 2011 01:57, Daπid <[email protected]> escribió: > Y hay que tener en cuenta que esto no es cálculo en paralelo. Con esto > sólo estás interpretando una línea de Python a la vez. >
Si usa la implementación de python de la página de python.org (cpython), tu afirmación es válida siempre en uno de los hilos no llame a un módulo que pueda liberar el GIL. Si usa implementaciones de python como la de jython o ironpython, si que threading se ejecutará de forma paralela (aunque puede ser que se encuentre con otras contrapartidas). Esa limitación está asociada a la implementación de python y no a su especificación. Lo anterior es relevante si se usa threading para cálculo de cpu paralelo. Si se usan hilos para escapar de bloqueos de io, viene bien que exista el GIL (hablo de cpython). Un bloqueo global es más ligero que la complejidad necesaria para hacer un bloqueo de grano fino. Todas las implementaciones de cpython sin GIL que he visto no dejaban de perder entre un 20-40% de rendimiento con un solo hilo. Para escapar del GIL también está la opción de usar el módulo multiprocessing[1]. Y dado que esta diseñado para tener un API similar a threading no debe haber mucho problema para usarlo si se conoce el módulo threading. [1] http://docs.python.org/library/multiprocessing.html Saludos: Javi _______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
