Formación bonificada para empresas

Diploma emitido por FUNDAE


Ejemplo de diploma acreditativo FUNDAE + Ampliar

i ¿Quiénes somos?
Valore esta página: Votos: 3.7/5 (179 votos)


Curso online de Programación paralela en Python para optimización de código bonificado

Cursos bonificados Calendario: Flexible.

FUNDAE cursos Fecha disponible: Inmediata.

Cursos bonificados seguridad social Porcentaje de Bonificación: 100%

Cursos online bonificados Diploma acreditativo emitido por FUNDAE.

Cursos bonificados para empresas Certificado acreditativo para concursos y oposiciones.

cursos virtuales bonificados Temario Personalizado.

FUNDAE cursos Modalidades: teleformación, aula virtual y MIXTA

Curso online de Programación paralela en Python para optimización de código

El sector tecnológico español demanda un 78% más de programadores especializados en optimización

142.300
Empleos en desarrollo software (INE, 2024)
67.400€
Salario medio programador senior (SEPE, 2024)

El curso

📊 ¿Por qué este curso?
+48%
mejora en velocidad de ejecucion con programacion paralela en Python certificada
Fuente: Stack Overflow · 2024
Plan de Igualdad Empresas Duración
La duración del curso de Programación paralela en Python para optimización de código es de 50 horas, acreditadas en el Diploma del mismo.

PLAZO DE REALIZACIÓN:

El plazo se puede establecer según las necesidades del alumno o del plan de formación de la empresa.
empresas de cursos bonificados

Objetivos

  • Aplicar técnicas de programación paralela y concurrencia en Python para optimizar rendimiento de aplicaciones
  • Gestionar recursos compartidos utilizando semáforos, barreras y sincronización en sistemas multihilo
  • Diseñar algoritmos escalables que permitan procesar grandes volúmenes de datos simultáneamente
  • Optimizar la eficiencia computacional evitando condiciones de carrera y conflictos en programas concurrentes
  • Desarrollar soluciones empresariales de análisis de datos que resuelvan problemas complejos con mayor rapidez


Bonificación Bonificación Curso bonificable al 100%
Bonificacion

Bonificación

Este curso puede ser bonificado al 100% para la empresa receptora, incluso aunque esta tenga un porcentaje de copago en razón de su número de empleados en plantilla. El coste de la formación se recuperará mediante descuento en el pago de los seguros sociales.
Este descuento será aplicable libremente en cualquier mes del año posterior a la fecha en que haya finalizado la formación. Podrán bonificarse las matrículas de aquellos alumnos que realicen al menos el 75% del curso con éxito.
Modalidades Modalidades Teleformación · Aula virtual · Mixta · Presencial
Modalidades

Modalidades

EN CURSOS ONLINE
Teleformación: En esta modalidad todo el curso se realiza a través de internet, con acceso las 24 hs. todos los días de la semana y plazo máximo de seis meses. No hay actividades como clases a las que el alumno deba asistir en horarios y fechas programados.
Aula virtual: En esta modalidad la formación se imparte mediante clases en directo a través de internet, es decir clases tele-presenciales, que se llevarán a cabo a través de ZOOM, Skype u otra herramienta a convenir.
Modalidad MIXTA: Combinación de las dos modalidades anteriores. Los trabajadores asisten a clases en directo (por ejemplo una a la semana) y entre clases disponen de material para avanzar en el curso en la plataforma. Es la más completa para grupos de trabajadores que realizan un mismo curso.

EN CURSOS PRESENCIALES o SEMI - PRESENCIALES
En esta modalidad los trabajadores realizan el curso asistiendo físicamente a un aula en la que se imparte la formación. Puede ser complementada igualmente con acceso a una plataforma online entre clases. Para esta modalidad se requiere una consulta previa de disponibilidad en la ciudad donde se desee llevar a cabo.

cursos tripartita

Temario


NOTA:

Trabajamos con la metodologia de curso personalizado, creada por Ciberaula en 1997. Usted puede solicitar un curso a la medida de sus objetivos, que combine lecciones de 2 o mas cursos en un plan de formacion a su medida. Si este es su caso consultenos, esta metodologia ofrece un aprovechamiento maximo de la formacion en los cursos bonificados para trabajadores.

El temario predefinido del curso online de Programación paralela en Python para optimización de código es el siguiente:

1 Introducción al curso

1.1 Introducción

1.2 Requisitos

1.3 Presentación Personal y Bienvenida

1.4 Valoraciones Tempranas en Udemy

1.5 Aprende a Utilizar las Herramientas de Udemy

1.6 Preguntas Frecuentes y Solución de Problemas

2 Instalando nuestras herramientas de trabajo

2.1 Guía para Instalar Python Usando Anaconda

2.2 Funcionalidades de Anaconda

2.3 Entornos Virtuales y Versiones de Python

2.4 Instalación de Librerías

2.5 Recursos del Curso

3 Concepto de procesamiento en paralelo

3.1 Cómputo Paralelo

3.2 Cómputo Paralelo en Python

3.3 Beneficios y Desafíos de la Computación Paralela

4 Hilos (Threads) y procesos en Python

4.1 Codificando Nuestro Primer Hilo (Thread)

4.2 Dominando Hilos (Threads) en Python

4.3 Hilos (Threads) Daemon

4.4 Crear Nuestro Primer Proceso

4.5 Dominando Procesos en Python

4.6 Procesos Daemon

4.7 Perspectiva General

4.8 Examen Rápido de Hilos y Procesos

5 Unión Hilos (Threads) y Procesos

5.1 Funcionalidad de Unión (Join)

5.2 Unión en Hilos (Threads)

5.3 Unión en Procesos

5.4 Examen Rápido de la Unión de los Hilos (Threads) y Procesos

6 Finalización Forzada de Hilos (Threads) y Procesos

6.1 Importancia de una Finalización Forzada

6.2 Finalizando Forzadamente un Hilo (Thread)

6.3 Finalizando Forzadamente un Proceso

6.4 Evita Pérdida de Información

6.5 Examen Rápido sobre la Finalización Forzada

7 Temporizador de Código

7.1 Temporizadores

7.2 Temporizando Hilos (Threads)

7.3 Temporizando Procesos

7.4 Examen Rápido de Temporizadores

8 Sincronización de Datos - Memoria Compartida entre Hilos (Threads)

8.1 Memoria Compartida

8.2 Sincronización con Lock

8.3 Correcta Estructura

8.4 Bloqueo Recursivo con RLock

8.5 Examen Rápido

9 Sincronización de Datos - Memoria Compartida entre Procesos

9.1 Memoria Compartida entre Distintos Procesos

9.2 Variedad de Objetos de Memoria Compartida

9.3 Sincronización Exitosa entre Procesos

9.4 Bloqueo Recursivo en Procesos

9.5 Examen Rápido de Memoria Compartida entre Procesos

10 Grupos de Ejecución

10.1 Ejecutor de Tareas Múltiples

10.2 Ejecución en Conjunto con ThreadPool

10.3 Ejecución Múltiple con ProcessPool

11 Comunicación en Paralelo con Eventos

11.1 Eventos en Python

11.2 Eventos en Hilos (Threads)

11.3 Dominando Eventos en Hilos (Threads)

11.4 Eventos en Procesos

11.5 Dominando Eventos en Procesos

11.6 Examen Rápido del uso de los Eventos

12 Sincronización con Objetos Condicionales

12.1 Introducción a los Objetos Condicionales

12.2 Condicionales en Hilos (Threads)

12.3 Dominando objetos Condicionales en Hilos (Threads)

12.4 Condicionales en Procesos

12.5 Dominando objetos Condicionales en Procesos

12.6 Examen Rápido de los Objetos Condicionales

13 Sincronización con Objetos Barrera

13.1 Objetos Barrera en Python

13.2 Barreras en Hilos (Threads)

13.3 Barreras en Procesos

13.4 Combinación Eficiente

13.5 Examen Rápido

14 Sincronización con Objetos Semáforos

14.1 Optimización de Recursos con Semáforos

14.2 Semáforos en Hilos (Threads)

14.3 Semáforos Limitados en Hilos (Threads)

14.4 Semáforos en Procesos

14.5 Semáforos Limitados en Procesos

14.6 Examen Rápido

15 Comunicación Segura entre Hilos (Threads)

15.1 Comunicación Efectiva

15.2 Estructura Simple

15.3 Estructura FIFO

15.4 Estructura LIFO

15.5 Estructura de Prioridad

15.6 Examen Rápido de Comunicación Segura entre Hilos

16 Comunicación Segura entre Procesos

16.1 Comunicación Efectiva

16.2 Estructura Simple

16.3 Estructura FIFO

16.4 Estructura Unible

16.5 Comunicación Bidireccional

16.6 Examen Rápido

17 Bloqueo Mutuo en Python

17.1 Bloqueo Mutuo en el Desarrollo de Código

17.2 Implementación Errónea de Código

17.3 Dificultad Detectando Bloqueos Mutuos

18 Estructura Eficiente en Código

18.1 Estructura, Diseño y Lógica en Nuestro Código

18.2 Eficiencia en Ejecución

19 Proyecto Final Explicación

19.1 Desarrollo Teórico

20 Proyecto Final - Implementación

20.1 Aviso Legal

20.2 Implementación Proyecto

21 Final del Curso

21.1 Agradecimiento y Despedida

21.2 Continúa tu Crecimiento

22 Apéndice y Fundamentos de Python

22.1 ¿Qué es Python y Por qué Utilizarlo?

22.2 Tipos de Datos

22.3 Listas

22.4 Tuplas

22.5 Conjuntos

22.6 Diccionarios

22.7 Funciones

22.8 Clases

22.9 Sentencias Condicionales

22.10 Bucles

22.11 Gráficos de Visualización

22.12 Excepción de Errores


Todo lo que necesitas saber antes de empezar

Información práctica — pulsa cada sección para desplegarla

💻 Software

  • Python 3.13 — descarga gratuita en python.org. También puedes instalar Anaconda (gratuito) si quieres gestionar entornos virtuales con interfaz gráfica; es la opción que usa el curso.
  • VS Code (gratuito) con la extensión Python de Microsoft. Alternativas igualmente válidas: PyCharm Community Edition (gratis), Jupyter Notebook (incluido en Anaconda).
  • Git (gratuito) — recomendable para versionar el proyecto final, aunque no es obligatorio.
  • Las librerías del curso (threading, multiprocessing, concurrent.futures) forman parte de la biblioteca estándar de Python: no hay que instalar nada de pago.

?️ Hardware

  • Ordenador de los últimos 5-6 años (Windows 10/11, macOS Ventura o superior, o Linux).
  • 4 GB de RAM mínimo; 8 GB recomendados para ejecutar varios procesos en paralelo sin que el sistema se ralentice.
  • Procesador con al menos 2 núcleos — imprescindible para apreciar los beneficios reales del paralelismo. La mayoría de PCs desde 2015 lo cumplen.
  • 2 GB de espacio libre en disco para Python, Anaconda y los proyectos.

🔑 Cuentas y servicios

  • Cuenta en GitHub (gratuita) — opcional, pero útil para subir el proyecto final.
  • No se necesita ningún servicio de pago ni suscripción externa.

📚 Conocimientos previos

  • Python intermedio: funciones, clases, listas, diccionarios y manejo básico de excepciones. El temario incluye un apéndice de repaso, pero no está diseñado para aprender Python desde cero.
  • Noción básica de qué es un proceso y qué es un hilo (no hace falta haberlos programado, solo saber que existen).
  • No se requiere experiencia previa en concurrencia ni en sistemas operativos.

A lo largo del curso construyes piezas funcionales que puedes reutilizar directamente en proyectos reales. Estos son los ejercicios más representativos:

  1. Descargador concurrente de archivos — creas un pool de hilos que descarga varios archivos simultáneamente y mide la ganancia de tiempo frente a la versión secuencial. Caso de uso: scrapers, ETL ligeros, bots de monitorización.
  2. Procesador paralelo de imágenes o datos CSV — usas ProcessPool para aplicar transformaciones a un lote de ficheros aprovechando todos los núcleos de la CPU. Caso de uso: pipelines de datos, preprocesado en ciencia de datos.
  3. Sistema productor-consumidor con colas seguras — implementas colas FIFO, LIFO y de prioridad para coordinar hilos que generan y procesan tareas. Caso de uso: sistemas de mensajería interna, workers de background en aplicaciones web.
  4. Simulación de acceso concurrente a recurso compartido — demuestras condiciones de carrera, las reproduces y las resuelves con Lock, RLock y semáforos. Caso de uso: cualquier aplicación con base de datos o fichero compartido entre varios hilos.
  5. Pipeline de análisis de datos con sincronización por barreras — varias fases de procesamiento se sincronizan con objetos Barrier para garantizar que todos los procesos terminen cada etapa antes de continuar. Caso de uso: análisis científico por lotes, agregación de métricas en tiempo real.
  6. Proyecto final integrador — aplicación completa que combina pools de procesos, eventos, colas y sincronización para resolver un problema de procesamiento intensivo real. Sirve como pieza de portafolio demostrable.
¿Estás listo para programación paralela en Python?
5 preguntas rápidas para saber si tu base de Python es suficiente y si ya conoces algo de concurrencia. Sin trampa: responde lo que sabes hoy, no lo que crees que deberías saber.
1 ¿Qué diferencia hay entre una lista y una tupla en Python?
2 ¿Para qué sirve un entorno virtual (venv) en Python?
3 ¿Qué es el GIL (Global Interpreter Lock) en Python?
4 Tienes una función que tarda 10 segundos en ejecutarse. Si lanzas 4 copias con threading y la función es CPU-intensiva, ¿qué esperas en CPython estándar?
5 ¿Qué hace este fragmento de código? <code>with lock: contador += 1</code>

Estos son los errores que aparecen con más frecuencia al empezar con concurrencia en Python. Identificarlos antes te ahorrará horas de depuración:

  • Modificar una variable compartida sin lock: varios hilos leen y escriben a la vez, el resultado final es impredecible. Siempre protege el acceso con threading.Lock() o usa tipos thread-safe como queue.Queue.
  • Confundir threading con multiprocessing para tareas CPU-intensivas: el GIL impide la ejecución paralela real de hilos en tareas de cómputo puro. Usa multiprocessing o concurrent.futures.ProcessPoolExecutor para ese caso.
  • No llamar a join() en hilos o procesos: el programa principal termina antes de que los workers acaben, cortando su ejecución sin aviso. Llama siempre a t.join() o usa el bloque with del executor.
  • Crear deadlocks con locks anidados: si el hilo A espera el lock del hilo B y viceversa, el programa se congela. Establece un orden de adquisición consistente o usa RLock cuando el mismo hilo necesita re-adquirir el lock.
  • Lanzar demasiados procesos simultáneos: crear un proceso por cada elemento de una lista de miles de ítems colapsa el sistema. Usa un ProcessPool con un tamaño razonable (típicamente igual al número de núcleos).
  • Olvidar el bloque if __name__ == "__main__": en Windows: sin él, cada proceso hijo intenta re-ejecutar el módulo principal y el programa entra en un bucle de creación infinita de procesos.
  • Compartir objetos no serializables entre procesos: multiprocessing serializa los datos con pickle; lambdas, conexiones de BD abiertas o sockets no son serializables y provocan errores crípticos. Crea estos recursos dentro del proceso hijo.
  • Usar time.sleep() como mecanismo de sincronización: asumir que un hilo habrá terminado tras N segundos es frágil. Usa Event, Barrier o join() para sincronización explícita y determinista.

Recursos gratuitos que complementan directamente el contenido del curso y te servirán más allá de él:

📖 Documentación oficial imprescindible

  • docs.python.org/3/library/threading.html — referencia completa del módulo threading: Lock, RLock, Event, Condition, Semaphore, Barrier, Timer.
  • docs.python.org/3/library/multiprocessing.html — todo sobre multiprocessing: Process, Pool, Queue, Pipe, Manager y memoria compartida.
  • docs.python.org/3/library/concurrent.futures.html — API de alto nivel ThreadPoolExecutor y ProcessPoolExecutor con ejemplos claros.

⌨️ Atajos y cheat sheets

  • devhints.io — cheat sheets de Python, incluidos patrones de uso rápido para colecciones y clases.
  • overapi.com/python — referencia visual rápida de la API de Python.
  • Guarda como snippet de VS Code el patrón if __name__ == "__main__": con Pool y join: lo usarás en cada ejercicio de multiprocessing.

?️ Herramientas gratuitas útiles

  • Anaconda (gratuito) — gestión de entornos virtuales y Jupyter Notebook integrado; es el entorno que usa el curso.
  • Jupyter Notebook — ideal para experimentar con fragmentos de código de hilos pequeños antes de pasar a scripts completos.
  • py-spy (pip, gratuito) — profiler de Python en tiempo real; te permite visualizar qué hilos están activos y dónde se bloquean sin modificar el código.
  • gitignore.io — genera el .gitignore correcto para proyectos Python en segundos.

👥 Comunidades donde resolver dudas

  • stackoverflow.com — busca por etiquetas [python] + [multithreading] o [multiprocessing]; la mayoría de errores clásicos ya están resueltos.
  • reddit.com/r/Python y reddit.com/r/learnpython — comunidades activas para preguntas de nivel intermedio-avanzado.
  • dev.to — artículos prácticos sobre GIL, asyncio y patrones de concurrencia en Python escritos por desarrolladores en activo.

?️ Práctica adicional

  • exercism.io (track Python) — ejercicios con feedback de mentores; útil para afianzar la base antes o durante el curso.
  • realpython.com — tutoriales gratuitos específicos sobre threading, multiprocessing y asyncio que complementan el temario con ejemplos alternativos.

Preguntas frecuentes

📰Blog del curso

Artículos publicados sobre Programación paralela en Python para optimización de código

6 sept 2025 Computación Paralela en Python: Acelerando el Rendimiento de Aplicaciones

Programación Paralela en Python

Por Ana Maria Gonzalez

Computación Paralela en Python: Acelerando el Rendimiento de Aplicaciones

La programación paralela se ha convertido en una herramienta esencial para optimizar el rendimiento de aplicaciones en entornos complejos. Mediante el uso de hilos y procesos, los desarrolladores pueden distribuir tareas de manera simultánea, reduciendo significativamente los tiempos de ejecución y mejorando la eficiencia de los sistemas. En 2025, esta técnica es clave para gestionar aplicaciones de gran escala y sistemas de computación científica.

La implementación de memoria compartida y estructuras de sincronización como semaforos y barreras permite a los programadores controlar el acceso concurrente a recursos críticos. Esto resulta fundamental para evitar errores de condiciones de carrera y bloqueos que podrían comprometer la estabilidad de aplicaciones empresariales y proyectos de ciencia de datos.

En la práctica, empresas que manejan grandes volúmenes de datos pueden beneficiarse de la computación concurrente para acelerar procesos de análisis y modelado predictivo. Por ejemplo, un equipo de científicos de datos puede procesar simultáneamente múltiples conjuntos de información, logrando resultados más rápidos y precisos para la toma de decisiones estratégicas.

Además, la programación paralela en Python impulsa la creación de aplicaciones escalables y eficientes en sectores como finanzas, logística y tecnología. El dominio de estas técnicas permite a los desarrolladores diseñar sistemas capaces de adaptarse a la creciente demanda de procesamiento de información, consolidando la competitividad de las empresas en un mercado digital cada vez más exigente.

Solicitar información

Respondemos en 3 hs. promedio


📰 Blog del curso


Glosario FUNDAE  —  Diccionario técnico de los 300 términos del sistema de formación bonificada Ver glosario →