Abordando el multihilo y el multiprocesamiento de manera transparente y Pythonic
[EuroPython 2018 - Charla - 2018-07-27 - PyCharm [PyData]]
[Edimburgo, Reino Unido]
Por David Liu
Con el aumento de la potencia de cálculo, aprovechar y controlar el código fuera del ámbito de un solo hilo se convierte en un problema cada vez mayor, junto con el deseo de permanecer en la capa de Python. Con las herramientas y marcos recientes que se han publicado, escapar del GIL de manera limpia es mucho más fácil que antes, permitiendo que el código Python utilice de manera efectiva arquitecturas de múltiples núcleos y muchos núcleos de la forma más Pythonic posible. En esta charla, aprenderás a utilizar el multiprocesamiento estático para la fijación de procesos y a equilibrar de manera efectiva los grupos de hilos con una importación parcheada de los módulos de threading.
Resumen:
Introducción al multihilo y al multiprocesamiento en Python
Historia del multihilo y multiprocesamiento en Python, marcos clásicos
Problemas que pueden ocurrir (sobresuscripción, problemas de paralelismo anidado, salto de procesos, recursos de grupo en máquinas compartidas)
Python accediendo a hardware más grande en los últimos años (28+ núcleos, etc.)
Cuándo permanecer en el GIL y cuándo escapar de él
Las ventajas y la seguridad del GIL
Salida a nivel de Python del GIL; análisis de cuándo volver a un solo hilo y cuándo el uso de hilos es una idea engañosamente mala
Responsabilidad de los marcos que salen nativamente del GIL
Las nuevas bibliotecas y técnicas de multihilo y multiprocesamiento
módulo de multiprocesamiento estático (smp) (y parcheo de multiprocesamiento)
control del grupo de hilos con llamadas de línea de comandos de Python ( python -m tbb -p 8)
Uniendo todo
Ejemplos de uso de multiprocesamiento estático en una máquina grande para detener la sobresuscripción
Ejemplo de proceso pseudo-demonio en una máquina de 4 núcleos mediante la fijación de procesadores
Control del grupo de hilos en un ejemplo simple de NumPy
Resumen - Mejores prácticas para utilizar los métodos anteriores para controlar el multihilo y el multiprocesamiento
Lo que necesita hacerse en el espacio (marcos y cosas que necesitan ser expuestas)
Problemas que aún existen en el área
Preguntas y respuestas