MANEJO DEL PARALELISMO Y CONCURRENCIA EN PYTHON
Enviado por José Benavides • 18 de Enero de 2023 • Tesina • 2.578 Palabras (11 Páginas) • 119 Visitas
[pic 1]
UNIVERSIDAD AGRARIA DEL ECUADOR
FACULTAD DE CIENCIAS AGRARIAS
CARRERA DE INGENERÍA EN COMPUTACIÓN E INFORMÁTICA
MATERIA:
SISTEMAS OPERATIVOS DISTRIBUIDOS
TEMA:
MANEJO DEL PARALELISMO Y CONCURRENCIA EN PYTHON
PRINCIPALES LIBRERÍAS EN EL MANEJO DEL PARALELISMO EN PYTHON
INCONVENIENTES DEL USO DEL PARALELISMO EN PYTHON
APLICACIÓN DE LA LIBRERÍA MPI
ESTUDIANTES:
ALTAMIRANO MORENO ANTHONY
DE LA PAZ GARCIA ROBERTO
NARVAEZ FERNANDEZ JUAN
CURSO:
7TO SEMESTRE C
DOCENTE GUÍA:
ING. JORGE HIDALGO
PERIODO: 2022 – 2023
GUAYAQUIL-ECUADOR
Tabla de Contenido
Tabla de Contenido 2
1. Python y el paralelismo 3
1.1 Manejo del paralelismo en Python 3
1.2 Concurrencia en Python 3
1.3 Librerías en el manejo del paralelismo 4
1.3.1 Librerías predeterminadas de Python 4
1.3.2 Librerías externas de Python 4
1.4 Inconvenientes del uso del paralelismo en Python 5
1.4.1 Condición de carrera 5
2. Librería MPI 6
2.1 Aplicación de la librería MPI 6
2.2 Explicación del ejercicio con MPI 7
3. Bibliografía 11
Python y el paralelismo
Manejo del paralelismo en Python
Antes que nada, se debe dar a conocer lo expuesto por códigofacilito (2019), “en la actualidad la mayoría de los lenguajes de programación soportan la programación concurrente y la programación en paralelo, pudiendo así ejecutar diferentes tareas en diferentes procesadores, sin embargo, con Python esto no es así”. Por lo cual se debe tener en mente que Python utiliza otro tipo de procedimientos para realizar el paralelismo en su programación.
Platzi (2022) explica en uno de sus cursos que “en Python, cuando nos referimos a concurrencia, estaremos hablando de Threads y Processes cuando nos refiramos al paralelismo”, de esta forma se puede entender que el paralelismo en Python está relacionado directamente a la concurrencia.
Si se observa la documentación en la página web oficial de Python se obtiene lo existen dos librerías en particular que tienen que ver con el paralelismo, las cuales son multiprocessing y threading, la primera estaba basada en procesos y la segundo en hilos. Estas dos librerías se explicarán más adelante.
Concurrencia en Python
Un breve concepto acerca de concurrencia es que “en el campo de la programación, cuando hablamos de sistemas concurrentes, nos referimos a diversos procesos que ocurren, prácticamente, al mismo tiempo” (edX, 2022).
En una de las secciones de los cursos de la empresa Platzi (2022) se explica que:
Lo primero a tener en cuenta es que debemos importar el módulo threading para poder usar los threads, luego generaremos una instancia de la clase Thread, la cual va a recibir un target como parámetro, este target es la función que queremos que ejecute en esta instancia del Thread que estamos crenado.
Con lo anteriormente expuesto se puede determinar que para el uso de la concurrencia en Python es necesario del uso de la librería threading con la cual se podrán realizar las operaciones correspondientes. Cabe aclarar que esta librería permite que se puedan generar hilos diferentes al hilo principal.
Librerías en el manejo del paralelismo
Librerías predeterminadas de Python
Multiprocessing
multiprocessing es un paquete que permite crear procesos (spawning) utilizando una API similar al módulo threading. El paquete multiprocessing ofrece concurrencia tanto local como remota, esquivando el Global Interpreter Lock mediante el uso de subprocesos en lugar de hilos (threads). Debido a esto, el módulo multiprocessing le permite al programador aprovechar al máximo múltiples procesadores en una máquina determinada. (Python, 2023)
Threading
Python (2023) explica que “este módulo construye interfaces de subprocesamiento de nivel superior sobre el módulo _thread de nivel inferior”.
Librerías externas de Python
Existen librerías que tienen funcionalidades más específicas para determinados casos pero que son desarrolladas por la comunidad detrás de Python, las librerías más usadas son:
- Nuitka
- Numba
- Pythran
- Pyston
- Cython
- pp
- IPython
- mpl4py
- PaPy
- pypar
Estas son solo unas cuantas librerías externas a Python o creadas por la comunidad, pero hay muchas más con funcionalidades extras o para problemas específicos, pero todas tienen el manejo del paralelismo como seña identificativa.
Inconvenientes del uso del paralelismo en Python
Condición de carrera
Bahit Eugenia (2022) explica que:
En la programación paralela, cuando dos procesos trabajan de forma simultánea compartiendo de un mismo conjunto de datos, si intentan escribir sobre estos, el resultado dependerá de cuál de los dos procesos sea más rápido y logre escribir primero. Esta situación se conoce como condición de carrera. (pág. 147)
Este problema es uno de los más complicados de tratar al momento de trabajar con paralelismo en Python, es por eso que la mejor solución es prevenirlas a través de una buena sincronización.
...