Python: GIL y concurrencia

Samuel García (@SamRadioFloyd)

¿Qué es concurrencia?

- Indeterminismo

- Recursos compartidos

CONCURRENCIA != PARALELISMO!!

Concurrent vs Parallel

Sincronización

- Necesarios cuando nos importa el orden de la ejecución.

- Dos tipos: Sincronización de datos y sincronización de procesos.

- Sincronización de procesos: forks y joins.

- Sincronización de datos: Recursos compartidos.

Sincronización

Palabros de concurrencia:

- Exclusión mutua

- Sección crítica

- Condiciones de carrera:

    - Deadlocks    - Busy waiting

    - Livelocks      - Priority inversion

    - Starvation

Threads

- Hilos de ejecución.

- Procesos ligeros y procesos pesados

- Los hilos de Python son hilos POSIX (o Windows para los raritos)

¿Cómo la afronta Python?

- MAL

- See GIL

GIL

GIL

- Global Interpreter Lock

- El intérprete de Python solo puede ejecutar un hilo a la vez.

- El GIL asegura acceso único a las tripas del intérprete.

GIL: Señales

- Python no tiene un thread scheduler (en cristiano, no podemos priorizar hilos ni cosas complicadas).

- Toda la gestión de los hilos depende del SO.

GIL: Señales

Concurrencia en Python y GIL

By samgh96

Concurrencia en Python y GIL

  • 38