ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

MANEJO DEL PARALELISMO Y CONCURRENCIA EN PYTHON

José BenavidesTesina18 de Enero de 2023

2.578 Palabras (11 Páginas)151 Visitas

Página 1 de 11

[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


  1. Python y el paralelismo

  1. 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.

  1. 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.

  1. Librerías en el manejo del paralelismo

  1. Librerías predeterminadas de Python

  1. 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)

  1. Threading

Python (2023) explica que “este módulo construye interfaces de subprocesamiento de nivel superior sobre el módulo _thread de nivel inferior”.

  1. 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.

  1. Inconvenientes del uso del paralelismo en Python

  1. 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.

Aunque también existe el proceso de exclusión mutua el cual “es la comunicación requerida entre dos o más procesos que necesitan acceder a la vez a un recurso compartido para que únicamente acceda uno de procesos simultáneamente a dicho recurso” (Román Díez, 2019, pág. 22).

De esta forma se puede concretar que existen problemas en el uso del paralelismo en Python, pero este inconveniente se puede evitar con buenas prácticas al programar teniendo en mente la sincronización.

  1. Librería MPI

  1. Aplicación de la librería MPI

Primero es necesario conocer acerca de MPI, por lo cual Dalcin (2022) explica que:

MPI, la interfaz de paso de mensajes, es un sistema de paso de mensajes estandarizado y portátil diseñado para funcionar en una amplia variedad de computadoras paralelas. El estándar define la sintaxis y la semántica de las rutinas de la biblioteca y permite a los usuarios escribir programas portátiles en los principales lenguajes de programación científica (Fortran, C o C++).

Con la explicación anterior está claro que existen una diversidad muy grande de variantes de MPI para Python, en este proyecto se utilizará en particular mpi4py de Dalcin Lisandro, la cual cuenta con una documentación bastante completa y una comunidad que apoya en el desarrollo a través de la plataforma de colaboración GitHub.

Dalcin (2022) explica el uso de esta librería como:

MPI para Python proporciona un enfoque orientado a objetos para el paso de mensajes que se basa en los enlaces estándar MPI-2 C++. La interfaz se diseñó centrándose en la traducción de la sintaxis y la semántica de MPI de los enlaces MPI-2 estándar para C++ a Python. Cualquier usuario de los enlaces estándar C/C++ MPI debería poder usar este módulo sin necesidad de aprender una nueva interfaz.

Para empezar con la aplicación de esta librería es necesario primero instalar MPI para Windows desde su web oficial, esto evitará que aparezcan errores en medio de la programación.

Luego se procede a instalar mpi4py con el siguiente comando en cualquier ventana de comandos o entorno de trabajo preferido: pip install mpi4py. De esta forma se podrá empezar a trabajar con MPI en Windows.

Luego de esto para ejecutar cualquier archivo de Python se lo hace con el comando mpiexec, seguido de la cantidad de procesadores a usar y por último el archivo donde se encuentren el programa. Un ejemplo rápido de esto puede ser: mpiexec -n 4 python helloWorld.py.

  1.  Explicación del ejercicio con MPI

Para empezar con la explicación primero es necesario establecer el ejercicio a utilizar para realizarlo correctamente, en este caso se utilizará la siguiente codificación, cabe recalcar que será explicada paso a paso en su funcionamiento.

...

Descargar como (para miembros actualizados) txt (17 Kb) pdf (156 Kb) docx (224 Kb)
Leer 10 páginas más »
Disponible sólo en Clubensayos.com