jueves, abril 19, 2007

Python Threads

De momento no me he visto en la necesidad de utilizar los threads de python, pero les he estado echando un vistazo.
Norman Natloff tiene unos tutoriales guapos y unos de ellos va sobre los threads: Tutorial on Threads Programming with Python.

Unos apuntes breves:
  • Hay 2 modulos, thread y threading; siendo el segundo de mas alto nivel.
  • No me mirado los modulos en detalle, pero el módulo threading se ve bastante completito: tiene locks, rlocks, semáforos, variables de condición, un recubrimiento sobre las variables de condición (Event) y timers. Pero sobre todo una clase para mi muy interesante Queue.
  • No se puede hacer multiproceso real con python, es decir sólo estará un thread ejecutandose y los threads son 'not pre-empted'. Es el interprete a través de un componente llamado GIL el que determina la planificación (bien porque un thread ha estado corriendo durante un determinado tiempo o bien por una operación E/S). Hay criticas al GIL... quizas en un futuro desaparezca.
  • Para depurar se puede usar PDB pero con unas limitaciones (también existe RPDB (bueno ya obsoleto... la evolución es winpdb))
Finalmente comentar que gracias a este tutorial he conocido la existencia de dis, el 'disassember' de python. Y un link sobre herramientas de depuración para python.

No hay comentarios: