¿El enhebrado de python expone problemas de visibilidad de la memoria y reordenamiento de sentencias como lo hace Java? Como no puedo encontrar ninguna referencia a un "Modelo de memoria de Python" ni nada por el estilo, a pesar del hecho de que mucha gente está escribiendo código Python multiproceso, supongo que estos problemas no existen aquí. No palabra clave volátil, por ejemplo. Pero no parece expresarse explícitamente en ningún lado que, por ejemplo, un cambio en una variable en un hilo sea inmediatamente visible para todos los otros hilos.python threading: modelo de memoria y visibilidad
Tal vez esto es todo muy obvio para los programadores de Python, sino como un programador de Java temerosa, que requieren un poco de seguridad adicional :)
Incluso en CPython, el acceso al diccionario no es atómico en todas las circunstancias. Si las funciones hash/compare de las claves se escriben en Python, el GIL se liberará temporalmente entre los códigos de operación cuando esas funciones se estén ejecutando. (Probablemente ya sepas esto, pero creo que vale la pena señalar para otros lectores) –
¡Gracias! Pasé toda mi mañana aprendiendo sobre el GIL. Obviamente (C) la programación de Python implicará una forma diferente de ver los hilos de lo que estoy acostumbrado. @Daniel Stutzbach: Soy nuevo en Python y habría pasado por alto ese hecho. Gracias. – philo
@philo, que resume la situación de multitarea para CPython: los subprocesos lo ayudarán solo si tiene E/S espera (que puede delegar en un subproceso) o si realiza operaciones pesadas en una extensión de Python segura para subprocesos (como 'numpy '). Si su propósito es usar múltiples núcleos para operaciones codificadas por Python y CPU, use 'multiprocesamiento' en lugar de' subprocesamiento'. –