Codea Blog  

Blog Details

Aplicación de la programación concurrente y paralela en Python

Python es un multiprogramador  y multiprocesador de tareas que nos permite crear códigos más eficientes pero también con un menor tiempo de ejecución, lo cual podemos conseguir intercalando las tareas (simultáneamente) o en paralelo. 


 

CONCURRENCIA

Es la capacidad de un programa con un mínimo de dos subprocesos que ejecuta múltiples tareas al mismo tiempo en el mismo sistema informático (disco, red o un solo núcleo de CPU) de manera superpuesta. Esto quiere decirnos, por ejemplo, si tenemos un único núcleo de CPU y se empieza por ejecutar la tarea A, luego si se terminase con la tarea A recién se empieza a trabajar en la B. Además nos permite regresar a anteriores tareas para terminarla.

 

Figura 01. Dos procesos (A y B) para un único núcleo CPU

 

HERRAMIENTAS

1. Hilos:

Flujo de instrucciones ordenadas que se ejecutan como parte de un proceso. Los subprocesos funcionan como identificadores y son la unidad de ejecución menor. Los subprocesos puedes interactuar con recursos compartidos y la comunicación es posible entre múltiples subprocesos.

 

 Un riesgo en esta secuencia es cuando dos subprocesos comienzan a compartir memoria que podría afectar el orden de ejecución, dar valores incorrectos o bloquear el sistema por completo.

 

Para aplicar, primero importamos la librería threading, creamos una función, ejecutamos y esperar a que terminen los hilos.


 

PARALELISMO

Es la capacidad de un programa de ejecutar procesos simultáneamente usando múltiples unidades de procesamiento (procesador multinúcleo o con múltiples CPU), con el objetivo de reducir el tiempo de ejecución y maximiza el uso de los hardwares.

 

Figura 02. Dos procesos (A y B) cada uno con un respectivo núcleo CPU y en paralelo

 

HERRAMIENTAS

1. Multiproceso:

Es un procesador que puede ejecutar múltiples subprocesos simultáneamente. Con ello podremos trabajar en varias cosas y en diferentes momentos, además de que son livianos en cuanto a la memoria en comparación con los procesos.


 

Como resumen, la siguiente tabla señala sus formas de ejecución, ventajas, desventajas e implementación:

Tabla 1. Comparación del concepto concurrencia y paralelismo
  Concurrencia Paralelismo
Ejecución

 Las tareas pueden intercalarse o ejecutarse en intervalos de tiempo solapados.

Las tareas se ejecutan simultáneamente en procesadores o núcleos separados.

Ventajas

Permite a los programas avanzar en múltiples tareas incluso cuando algunas de ellas están bloqueadas.

Mejora el rendimiento general del programa al distribuir las tareas entre varios procesadores o núcleos.

Desventajas

El número de núcleos disponibles y la potencia de procesamiento del sistema son limitados.

La cantidad de memoria disponible y la sobrecarga de comunicación entre procesadores o núcleos son limitadas.

Implementación

Puede implementarse utilizando hilos, corrutinas o programación asíncrona.

Puede implementarse mediante multiprocesamiento, multithilos o computación distribuida.

 


Conoce más sobre las herramientas de hilos y procesos en la programación:

 

 


REFERENCIAS:

Palach, J. (2014). Parallel Programming with Python. Packt Publishing.

Forbes, E. (2017). Learning concurrency in Python. Packt Publishing.

 

Comentarios

Registrate o Inicia Sesión para comentar y obtener Cursos de pago gratis

function loadurl(){ var val1 = document.getElementById("valor3").value; console.log(val1); if(val1){ window.location = "/comunidad/blog/filtrar/"+val1+"/"} }