Programacin Concurrente en Python Rogelio Ferreira Escutia Tcnicas
- Slides: 39
“Programación Concurrente en Python” Rogelio Ferreira Escutia
Técnicas para Programación Concurrente
Técnicas Clásicas Serial. Técnicas Concurrentes Hilos. Procesos. Paralelismo. Distribución. . 3
Programación Serial
Serial Ejecución de tareas en serie: "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 5
Programación Concurrente
Concurrente Ejecución de tareas de manera concurrente: "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 7
Serial vs. Concurrente Comparación en tiempo: "High Performance Python", Micha Gorelick & Ian Ozsvald, O'Reilly Media, Sebastopol California USA 2014 8
Programación con Hilos
Hilos - características Son parte de un proceso en ejecución. Se les conoce como procesos ligeros, ya que no tienen su propio direccionamiento de memoria. Pueden ser interrumpidos en su ejecución. Los hilos pueden compartir datos entre ellos de manera directa. La mayoría de los sistemas operativos no los considera como un entidad separada. "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 10
Pasos para programar hilos Importar biblioteca (thread). Definir el código que ejecutará el hilo (funciones) Crear nuestro hilo (instanciar objeto de tipo thread) y definir su código de ejecución “target”). Arrancar el hilo (start). "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 11
Hilos “Hola Mundo!” utilizando un hilo: . 12
Hilos “Hola Mundo!” utilizando 3 hilos: . 13
Estados de un hilo Un-Started: Ya está definido el hilo pero no está en ejecución. Runnable: Cuando se arrancó (start) y está en espera de ser llamado por el scheduler del sistema operativo. Running: Hilo en ejecución. Waiting: Cuando está en espera de que otro hilo termine su ejecución. Dead: Cuando la ejecución del hilo ha terminado. "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 14
Estados de un hilo "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 15
Variables globales Los variables que usa cada hilo, son variables locales, es decir, otro hilo no puede conocer esa variable ni su contenido. Para usar una variable como “global” es necesario declarar esa variable de manera normal pero dentro del programa principal, y al inicio de cada hilo que quiera accesar a la variable global tenemos que poner el prefijo “global” y luego el nombre de la variable. De esta manera un hilo puede accesar y modificar una variable global. . 16
Variables globales . 17
Programación con Procesos
Procesos - características Son ejecuciones de código independientes. Tienen su propio direccionamiento de memoria. Son independientes unos de otros. Los procesos no comparten datos entre ellos de manera directa. "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 19
Procesamiento Cola de de tareas en un procesador: "Programación concurrente", http: //ferestrepoca. github. io/paradigmas-deprogramacion/progconcurrente/concurrente_teoria/index. html, abril 2020 20
Hilos y Procesos Diferentes formas de programar: "Programación concurrente", http: //ferestrepoca. github. io/paradigmas-deprogramacion/progconcurrente/concurrente_teoria/index. html, abril 2020 21
Métodos usados en Procesos start(): Arranca un proceso y sólo pueden ser invocados una vez por proceso. join([timeout]): Espera a que un proceso termine (si se ejecuta sin parámetros. Si en envía un “timeout” (opcional) entonces se espera la cantidad de segundos que se le indiquen. is_alive(): Sirve para indentificar si un proceso sigue en funcionamiento. "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 22
Procesos – Hola Mundo (1) Importar la librería para uso de procesos: . 23
Procesos – Hola Mundo (2) Definir el código (función) que ejecutará nuestro proceso quer recibirá como parámetro el número del proceso: . 24
Procesos – Hola Mundo (3) Definir el inicio del código del programa principal. Esto es un requisito para el uso de procesos. Esto es importante si un programa va a ser llamado desde otro programa. . 25
Procesos – Hola Mundo (4) Definir el código del programa principal. Crear el proceso. Arrancar el proceso. . 26
Procesos – Hola Mundo (5) Programa completo: . 27
Intercambio de datos en procesos Los procesos son independientes entre sí y no comparten datos entre ellos de manera directa (no hay memoria compartida). Se requiere establecer una conexión entre procesos (pipe). Una vez establecida la conexión entre procesos, la comunicación es dúplex (bidireccional). "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 28
Intercambio de datos en procesos Conexión entre 2 procesos: "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 29
Intercambio de datos en procesos Conexión entre 2 procesos: . 30
Programación Paralela
Comparación Concurrencia vs. Paralelismo: "Programación concurrente", http: //ferestrepoca. github. io/paradigmas-deprogramacion/progconcurrente/concurrente_teoria/index. html, abril 2020 32
Comparación Concurrencia vs. Paralelismo: "Mastering Python High Performance", Fernando Doglio, Packt Publishing Birmingham UK 2015 33
Tareas que se pueden paralelizar Motores de búsqueda. Procesamiento de imágenes. "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 34
Programación paralela Una misma tarea dividida en pequeñas sub-tareas: "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 35
Programación Distribuida
Programación Distribuida Usando nodos reales y virtuales en una Grid Computing: "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 37
Programación Distribuida Un cliente envía una tarea a la Grid: "Advanced Guide to Python 3 Programming", John Hunt, Springer Nature Switzerland AG 2019 38
Rogelio Ferreira Escutia Instituto Tecnológico de Morelia Departamento de Sistemas y Computación Correo: rogelio@itmorelia. edu. mx rogeplus@gmail. com Página Web: http: //sagitario. itmorelia. edu. mx/~rogelio/ http: //www. xumarhu. net/ Twitter: Facebook: http: //twitter. com/rogeplus http: //www. facebook. com/groups/xumarhu. net/
- Programacin
- Als algoritmo
- Tcnicas de estudio
- Metodo lser
- Tcnicas
- Tcnicas de estudio
- Tcnicas de estudio
- Arquitectura de servidores
- Lamis theorem problems
- Desinfeccion concurrente
- Limpieza concurrente y terminal
- Programacion concurrente
- Rogelio palomo
- Rogelio boggino
- Rogelio montañana
- Rogelio golfarb
- Rogelio orillac
- Rogelio en letras goticas
- Rogelio martinez masegosa
- Rogelio montañana
- Saglit na kasiglahan sa tata selo
- Rogelio montañana
- Rosana louro ferreira silva
- Criterios de light transudato e exsudato
- Muriel ferreira
- Gina ferreira
- Rafael de vasconcelos xavier ferreira
- Thatiana ferreira vieira nutricionista
- Annabel ferreira
- Alysson ferreira
- Nivan ferreira
- Rui seabra ferreira junior
- Juvinal ferreira
- Joseph ferreira mit
- Deisy lorena niño ferreira
- Tiago toledo ferreira
- Antonio alfredo ferreira loureiro
- Econofísica livros
- Metade de mim ferreira gullar
- Propriedades das isometrias