Curso de Cómputo Paralelo en Python: Optimización de Código
Este curso está diseñado para proporcionar una comprensión sólida de la computación paralela y la programación concurrente utilizando el lenguaje de programación Python. Explorarás estrategias clave para optimizar el rendimiento en tus programas y aplicaciones, desarrollando habilidades prácticas para abordar desafíos en la programación concurrente.
A lo largo de cada módulo, desentrañarás los entresijos de la computación paralela, comprendiendo cómo se pueden dividir las tareas en unidades más pequeñas y procesarlas simultáneamente para acelerar la ejecución y mejorar la eficiencia. A través de ejemplos prácticos y ejercicios interactivos, adquirirás una comprensión sólida de los conceptos clave, incluidos los hilos, los procesos, las primitivas de sincronización y los modelos de concurrencia.
Además, este curso te proporcionará las habilidades prácticas necesarias para abordar los desafíos inherentes a la programación concurrente. Aprenderás a diseñar algoritmos eficientes, gestionar recursos compartidos de manera segura y evitar condiciones de carrera y bloqueos indeseados. Asimismo, explorarás técnicas avanzadas, como el uso de semáforos, cerrojos, barreras de sincronización y más, para crear aplicaciones robustas y escalables.
Al finalizar este curso, estarás equipado con el conocimiento y la experiencia necesarios para aplicar con confianza tus habilidades en el vasto y emocionante campo de la programación paralela. Ya sea que estés interesado en desarrollar aplicaciones de alto rendimiento, optimizar algoritmos complejos o abordar problemas de concurrencia en sistemas distribuidos, este curso te proporcionará una base sólida y te preparará para enfrentar los desafíos del mundo real con destreza y maestría.
Lo que aprenderás:
-
Introducción al Cómputo Paralelo en Python: Comprenderás los fundamentos del cómputo paralelo y cómo implementarlo en Python para mejorar el rendimiento de tus aplicaciones.
-
Instalación y Configuración de Herramientas: Configurarás tu entorno de desarrollo para trabajar con Python y herramientas específicas para la programación paralela.
-
Fundamentos del Procesamiento Paralelo: Estudiarás los conceptos básicos del procesamiento paralelo y cómo dividir las tareas para una ejecución simultánea eficiente.
-
Programación con Hilos y Procesos: Aprenderás a crear y gestionar hilos y procesos, comprendiendo sus diferencias y aplicaciones para maximizar el rendimiento.
-
Sincronización en Entornos Paralelos: Dominarás técnicas de sincronización, como Locks, RLocks y Semáforos, para coordinar el acceso a recursos compartidos de manera segura.
-
Optimización del Rendimiento Paralelo: Implementarás técnicas avanzadas para mejorar el rendimiento de tus aplicaciones paralelas, incluyendo el uso de temporizadores y técnicas de balanceo de carga.
-
Comunicación y Sincronización entre Tareas Paralelas: Explorarás cómo gestionar la comunicación y la sincronización entre hilos y procesos utilizando Eventos, Condicionales y barreras.
-
Manejo de Problemas Comunes en Cómputo Paralelo: Identificarás y resolverás problemas comunes en la programación paralela, como Bloqueos Mutuos y contención de recursos.
-
Diseño y Desarrollo de Proyectos Paralelos: Aplicarás tus conocimientos para desarrollar proyectos finales que utilicen técnicas avanzadas de cómputo paralelo, asegurando su eficiencia y escalabilidad.
-
Técnicas Avanzadas en Cómputo Paralelo: Explorarás técnicas de vanguardia en cómputo paralelo, incluyendo el uso de estructuras de datos concurrentes y estrategias para optimizar el procesamiento paralelo.
Temario del Curso:
-
Introducción Curso: Inicia con una visión general del curso, cubriendo requisitos y objetivos. Incluye una presentación personal, instrucciones sobre cómo usar Udemy, y soluciones a preguntas frecuentes para preparar a los estudiantes para una experiencia de aprendizaje óptima y fluida.
-
Instalando Nuestras Herramientas de Trabajo: Aprende a instalar Python con Anaconda y configurar entornos virtuales. Explora las funcionalidades de Anaconda y cómo instalar librerías esenciales, asegurando que tu entorno de desarrollo esté preparado para trabajar en cómputo paralelo y concurrente.
-
Conceptos de Procesamiento en Paralelo: Introducción a los conceptos clave del cómputo paralelo. Comprende cómo dividir tareas en unidades más pequeñas para procesarlas simultáneamente, y explora los beneficios y desafíos asociados con la computación paralela en Python.
-
Hilos (Threads) y Procesos en Python: Aprende a trabajar con Hilos y Procesos en Python. Cubre desde la creación básica de hilos hasta la gestión avanzada de procesos, incluyendo Hilos Daemon y Procesos Daemon, para optimizar la ejecución paralela en tus aplicaciones.
-
Unión de Hilos (Threads) y Procesos: Descubre cómo unir Hilos y Procesos utilizando la funcionalidad de join. Aprende a sincronizar tareas paralelas de manera eficiente, asegurando que los hilos y procesos se completen correctamente antes de proceder.
-
Finalización Forzada de Hilos (Threads) y Procesos: Explora la importancia y técnicas para la finalización forzada de hilos y procesos. Aprende a evitar la pérdida de información y manejar adecuadamente la terminación abrupta de tareas paralelas.
-
Temporización del Código: Implementa temporizadores para medir el rendimiento de tu código paralelo. Aprende a temporizar tanto Hilos como Procesos para evaluar y optimizar la ejecución de tus aplicaciones en paralelo.
-
Sincronización de Datos – Memoria Compartida entre Hilos (Threads): Aprende a manejar la memoria compartida entre Hilos usando Locks y RLocks. Explora cómo sincronizar el acceso a datos compartidos para evitar condiciones de carrera y asegurar la integridad de los datos.
-
Sincronización de Datos – Memoria Compartida entre Procesos: Descubre cómo manejar la memoria compartida entre Procesos. Cubre diversos objetos de memoria compartida y técnicas para asegurar una sincronización exitosa y evitar conflictos en entornos de múltiples procesos.
-
Grupos de Ejecución: Aprende a usar ejecutores de tareas múltiples, como ThreadPool y ProcessPool. Explora cómo agrupar tareas para una ejecución eficiente y gestionar simultáneamente múltiples Hilos o Procesos.
-
Comunicación en Paralelo con Eventos: Explora el uso de eventos en Python para la comunicación entre Hilos y Procesos. Aprende a implementar y dominar eventos para coordinar tareas paralelas y gestionar la sincronización entre múltiples componentes.
-
Sincronización con Objetos Condicionales: Introducción a los objetos condicionales en Python para la sincronización entre Hilos y Procesos. Aprende a utilizar objetos condicionales para coordinar y sincronizar el acceso a recursos compartidos.
-
Sincronización con Objetos Barrera: Aprende a usar Objetos Barrera para sincronizar la ejecución de Hilos y Procesos. Explora cómo configurar barreras para asegurar que todas las tareas alcancen un punto de sincronización antes de continuar.
-
Sincronización con Objetos Semáforo: Descubre cómo utilizar semáforos para optimizar la gestión de recursos en entornos paralelos. Aprende a implementar semáforos tanto en Hilos como en Procesos para controlar el acceso concurrente a recursos limitados.
-
Comunicación Segura entre Hilos: Aprende técnicas para la comunicación segura entre Hilos. Explora estructuras como FIFO, LIFO y prioridad para transmitir datos de manera efectiva y segura entre hilos.
-
Comunicación Segura entre Procesos: Descubre métodos para la comunicación segura entre procesos. Cubre estructuras como FIFO, unidireccional y bidireccional para una comunicación eficaz y segura en entornos de procesos múltiples.
-
Bloqueo Mutuo en Python: Explora los conceptos de bloqueo mutuo y cómo evitarlo en Python. Aprende a identificar y resolver problemas relacionados con el bloqueo mutuo para asegurar la eficiencia y estabilidad de tus aplicaciones paralelas.
-
Estructura Eficiente en Código: Aprende a diseñar y estructurar código eficiente para cómputo paralelo. Explora principios de diseño y optimización para asegurar una ejecución rápida y efectiva de tus aplicaciones.
-
Proyecto Final – Explicación: Presenta el desarrollo teórico del proyecto final, proporcionando una guía sobre cómo aplicar los conceptos aprendidos en el curso para diseñar y construir una aplicación paralela completa.
-
Proyecto Final – Implementación: Implementa el proyecto final del curso, aplicando todos los conocimientos adquiridos. Incluye una guía paso a paso para la implementación práctica y los recursos necesarios para completar el proyecto exitosamente.
-
Final del Curso: Concluye el curso con una despedida y agradecimiento. Explora recursos adicionales para continuar el aprendizaje y el desarrollo profesional en el campo del cómputo paralelo y la programación concurrente.
-
Apéndice – Fundamentos de Python: Repasa los fundamentos de Python necesarios para el curso. Incluye conceptos esenciales como tipos de datos, listas, tuplas, conjuntos, diccionarios, funciones y manejo de excepciones, preparando una base sólida para la programación paralela.















