Mostrando entradas con la etiqueta Capítulo 12. Mostrar todas las entradas
Mostrando entradas con la etiqueta Capítulo 12. Mostrar todas las entradas

martes, 5 de febrero de 2019

Videoreceta Python No. 12-7: Ejecutar un Subproceso

Videoreceta Python No. 12-6: Crear un Pool de Threads

Videoreceta Python No. 12-5: Comunicación entre Procesos

Videoreceta Python No. 12-4: Crear un Proceso

Videoreceta Python No. 12-3: Controlar la Sincronización de Múltiples Threads

Videoreceta Python No. 12-2: Controlar el Acceso a Recursos

sábado, 17 de febrero de 2018

Receta Python No. 12-8: Programar la Ejecución de Tareas

1. Problema

Programar la ejecución de una tarea.

2. Solución

En el módulo sched (parte de la librería estándar de Python) provee varios objetos para la programación de la ejecución de una tarea. En particular, la clase Scheduler permite agregar a una cola los eventos y gestionarlos (Bernard, 2016).

3. Código Python


Prueba de ejecución:

Python 3.5.2


El método enter() (línea 9) establece el tiempo de programación de la tarea -mostrar_mensaje-. En la línea 10 se invoca el método run() para esperar la ejecución de la tarea programada.

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.

O

Receta Python No. 12-7: Crear un Subproceso

1. Problema

Crear un subproceso para la ejecución de una tarea externa (e.g., proceso de línea de comandos).

2. Solución

El módulo subprocess (librería estándar de Python) permite la creación de subprocesos. Esta es una nueva solución que reemplaza a os.system y os.spawn. En concreto el módulo subprocess contiene el método run(); el cual es capaz de ejecutar subprocesos (Bernard, 2016).

3. Código Python

Archivo Python crear-subproceso.py [enlace alternativo]:

Prueba de ejecución:

b'total 825\n-rw-r--r-- 1 johno 197609   739 Jun  3  2016 CatalogoProductos.xml\n-rw-r--r-- 1 johno 197609  6015 Jan 13 12:52 Python - R1.03 - B\xc3\xbasqueda dentro de una Cadena de Caracteres .xml\n-rw-r--r-- 1 johno 197609  4481 Jan 13 15:20 Python - R1.04 - Obtener una Sub-cadena de Caracteres.xml\n-rw-r--r-- 1 johno 197609  5593 Jan 13 21:40 Python - R1.05 - Reemplazar Coincidencias de Texto.xml\n-rw-r--r-- 1 johno 197609  3303 Jan 14 09:03 Python - R1.06 - Invertir una Cadena de Caracteres (String).xml\n-rw-r--r-- 1 johno 197609  4120 Jan 14 12:18 Python - R1.07 - Remover el Espacio en Blanco de una Cadena de Caracteres (String).xml\n-rw-r--r-- 1 johno 197609  3488 Jan 14 20:26 Python - R1.08 - Cambiar la Capitalizaci\xc3\xb3n de una Cadena de Caracteres (String).xml\n-rw-r--r-- 1 [...]


Los [...] indican la exposición de una parte del resultado. Puede variar dependiendo del directorio donde se ejecute el script Python.


La línea 3 especifica que se ha de ejecutar el comando ls con el argumento -l para mostrar el contenido de un directorio con detalles de los diretorios y archivos.

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.

O

viernes, 16 de febrero de 2018

Receta Python No. 12-6: Crear un Pool de Procesos

1. Problema

Crear un pool de threads (procesos) para que ejecuten una tarea específica.

2. Solución

La clase Pool (módulo multiprocessing) facilita la creación y gestión de un pool de threads (Bernard, 2016).

3. Código Python

Archivo Python crear-pool.py [enlace alternativo]:

Prueba de ejecución:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.

O

Receta Python No. 12-5: Comunicar Diferentes Procesos

1. Problema

Comunicar dos procesos para envío de información.

2. Solución

En el módulo multiprocessing se hayan dos clases para la comunicación entre procesos: pipe y queue (Bernard, 2016).


La comunicación a través de pipes se realiza en ambos sentidos (full-duplex). Un inconveniente que puede resultar es el intento de acceso a múltiple a un recurso: los datos se pueden dañar.


A través de las colas, estructuras de tipo FIFO (First In, First Out) la recepción de datos de diferentes fuentes es posible sin dañar el recurso compartido.

3. Código Python


Prueba de ejecución:

['Python', '2']




Prueba de ejecución:

['Python', '2']

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.


O

Receta Python No. 12-4: Crear un Proceso

1. Problema

Crear un proceso para la ejecución de una tarea.

2. Solución

En el módulo multiprocessing (parte de la librería estándar de Python) se encuentra la clase Process. Esta clase cuenta con las funciones para la creación de un proceso (Bernard, 2016).

3. Código Python

Archivo Python crear-proceso.py [enlace alternativo]:

Prueba de ejecución:

Los datos se han guardado.

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.

O

jueves, 15 de febrero de 2018

Receta Python No. 12-3: Sincronizar la Ejecución de un Thread hasta un Punto Específico

1. Problema

Sincronizar la ejecución de un thread hasta un punto específico.

2. Solución

Los puntos de parada (o en inglés, barrier) sirven para establecer un punto de parada para la sincronización de ejecución (Bernard, 2016).

3. Código Python

import threading


barrera = threading.Barrier(5, timeout=10)


El primer argumento indica la cantidad de threads serán usados en el barrera: 5.

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.

O

Receta Python No. 12-2: Controlar el Acceso a Recursos Compartidos

1. Problema

Controlar el acceso a un recurso compartido.

2. Solución

En el módulo threading incluye la clase Lock para controlar el acceso de threads a un recurso compartido (Bernard, 2016).

3. Código Python

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.

O

Receta Python No. 12-1: Crear un Thread

1. Problema

Crear un thread para ejecutar una tarea.

2. Solución

Sobre el módulo threading de la librería estándar de Python se halla la clase Thread. Esta clase provee elementos de programa para la ejecución de múltiples funciones en paralelo (Bernard, 2016).

3. Código Python

Archivo Python crear-thread.py [enlace alternativo]:

Prueba de ejecución:

Creación de threads en Python

4. Literatura & Enlaces

Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.

O