He estado tratando de entender cómo funcionan los hilos en Python, y es difícil encontrar buena información sobre cómo funcionan. Puede que me esté perdiendo un enlace o algo así, pero parece que la documentación oficial no es muy completa sobre el tema, y no he podido encontrar un buen artículo.¿Cómo funcionan los subprocesos en Python, y cuáles son los peligros específicos de Python-threading?
De lo que puedo decir, sólo un hilo puede estar en ejecución a la vez, y el hilo activo cambia cada 10 instrucciones más o menos?
¿Dónde hay una buena explicación, o se puede proporcionar uno? También sería muy agradable estar al tanto de los problemas comunes con los que se tropieza al usar hilos con Python.
Realmente un comentario sobre la cita de smoothspan: seguramente el enhebrado de Python efectivamente te limita a un núcleo, incluso si la máquina tiene varios?Puede haber beneficios de multinúcleo, ya que el siguiente subproceso puede estar listo sin un cambio de contexto, pero sus subprocesos de Python nunca pueden hacer uso de> 1 núcleo a la vez. –
Correcto, los hilos de python están prácticamente limitados al núcleo único, A MENOS QUE un módulo C interactúe muy bien con el GIL, y ejecuta su propio hilo nativo. – Arafangion
En realidad, los núcleos múltiples hacen que los hilos _son_ eficientes ya que hay mucha falta de mantenimiento al verificar si cada hilo puede acceder al GIL. Incluso con el nuevo GIL, el rendimiento es aún peor ... http://www.dabeaz.com/python/NewGIL.pdf – Basic