<Talks/>

Programación en paralelo con Python: sácale jugo a los núcleos de tu computadora (Español)

  • Other

Authors

Date

Saturday 08, 09:10

About the talk

Ahora más que nunca, personas de distintas áreas del conocimiento han aprendido a programar. Debido a su formación no técnica, los conceptos básicos de programación en paralelo son desconocidos y estamos perdiendo tiempo precioso de nuestras vidas al programar tareas largas de manera secuencial.

En esta charla cubriremos los conceptos básicos de programación en paralelo con Python y mostraremos lo fácil que es implementarlo en Python. También aclararemos ciertos mitos como que en Python no hay paralelismo real e introduciremos distintas herramientas para usar fácilmente programación en paralelo con Python. Se explicarán ciertas consideraciones que debemos tener en cuenta para crear programas que hagan procesamiento en paralelo. Finalmente introduciremos unos casos de estudio, por ejemplo, de cómo aplicar programación en paralelo para acelerar la evaluación de modelos de Machine Learning.

Outline

Introducción (5 minutos)

  • Problema: Todos tenemos acceso a distintos núcleos pero escribimos código que solamente utiliza un núcleo.
  • Ejemplos de tareas que podemos hacer en paralelo
  • Demostración en vivo de cómo se usa en nuestra vida diaria: ejecutar una operación de IO que bloquea una interfaz gráfica VS. una que utiliza hilos cuya interfaz no se bloquea. Hilos y procesos (10 minutos)
  • Definición de hilos
  • Definición de procesos
  • Diferencia entre hilos y procesos
  • El GIL en Python
  • Cuándo usar hilos y cuándo usar procesos
  • Sincronización
  • Memoria compartida Paralelismo en Python (12 minutos)
  • Hilos (Módulo threading)
  • Procesos (Módulo multiprocessing)
  • Pools y workers
  • Librería joblib Casos de estudio (7 minutos)
  • Procesando XML en paralelo
  • Acelerando classifier chain en scikit-learn
  • Ejecutar cross validation en paralelo Consideraciones (3 minutos)
  • Paralelismo introduce complejidad al sistema
  • Sincronización y tareas de corta duración pueden resultar en menor rendimiento
  • Ciertos problemas no escalan linealmente
  • No todos los problemas se pueden dividir fácilmente
  • Frameworks como Spark y dask te dan paralelismo automático, dependiendo de la tarea. Preguntas (3 minutos)

NB: En caso de ser necesario, la charla y las diapositivas pueden ser impartidas en inglés.