tutorial threading thread lock ejemplos and python multithreading memory-model

threading - Hilo de python: modelo de memoria y visibilidad.



python thread pool (1)

¿El subproceso de Python expone problemas de visibilidad de memoria y reordenamiento de declaraciones como lo hace Java? Como no puedo encontrar ninguna referencia a un "Modelo de memoria de Python" ni nada de eso, a pesar del hecho de que muchas personas están escribiendo código de Python de multiproceso, supongo que estos errores no existen aquí. Ninguna palabra clave volátil , por ejemplo. Pero no parece que se indique explícitamente en ninguna parte que, por ejemplo, un cambio en una variable en un subproceso sea inmediatamente visible para todos los demás subprocesos.

Tal vez todo esto sea muy obvio para los programadores de Python, pero como temeroso programador de Java, necesito un poco más de seguridad :)


No hay un modelo formal para los hilos de Python (hey, después de todo, no hubo uno para Java durante años ... con suerte, uno también se escribirá para Python).

En la práctica, ninguna implementación de Python realiza una optimización avanzada, como el reordenamiento de sentencias o el tratamiento temporal de variables compartidas como subprocesos locales, y puede contar con estas restricciones semánticas aunque no estén formalmente aseguradas.

CPython en particular, como lo menciona @ Rawheiser, utiliza un bloqueo de intérprete global; otras implementaciones (PyPy, IronPython, Jython, ...) no (por lo que pueden usar múltiples núcleos de manera efectiva con un modelo de subprocesamiento, mientras que CPython requiere multiprocesamiento para el mismo propósito), por lo que no debe contar con eso si lo desea para escribir código que sea portátil a través de implementaciones de Python. (Por lo tanto, no debe contar con la "atomicidad" de las operaciones que solo son atómicas en CPython debido a la GIL, como los accesos al diccionario; en otras implementaciones de Python, varios subprocesos pueden modificar un dict a la vez y causar errores a menos que proteja el dictado con un candado o similar).