En una gran aplicación del mundo real, los módulos y las funciones tienen que pasar por muchas tareas basadas en entradas y salidas, como leer o actualizar bases de datos, comunicarse con diferentes microservicios y solicitar y responder con clientes o compañeros. Estas tareas pueden tardar bastante tiempo en completarse.
El tiempo que se tarda en atender una solicitud y responder al cliente se denomina latencia y los programadores deben reducir la latencia tanto como sea posible. Esto lleva a la necesidad de un procesamiento paralelo donde nuestra aplicación puede ejecutar alguna función o método con diferentes parámetros para diferentes clientes. Podemos lograr eso usando subprocesos. Un hilo puede ejecutar una función en paralelo con otros hilos. Cada subproceso comparte el mismo código, datos y archivos mientras tienen su propia pila y registros.
Módulo utilizado:
En Python, podemos crear y ejecutar subprocesos utilizando el módulo de subprocesos . Este módulo en python proporciona soporte potente y de alto nivel para subprocesos.
Enfoque paso a paso:
- Importar las bibliotecas. Usaremos el módulo de subprocesamiento para crear y ejecutar el subproceso. Para observar la salida, crearemos algún retraso usando el módulo de tiempo .
import threading import time
- Defina una función de muestra que usaremos para ejecutar en diferentes subprocesos. En este ejemplo, hagamos una función que imprima los cuadrados de los números en la lista dada.
# A sample function to print squares def print_squares(thread_name, numbers): for number in numbers: print(thread_name, number**2) # Produce some delay to see the output # syntax: time.sleep(<time in seconds : float>) time.sleep(1)
- Ahora cree 2 o más hilos usando la clase threading.Thread . La sintaxis para crear un hilo se da a continuación:
Sintaxis: thread_object = threading.Thread(target=<nombre de función>, args=<tupla de argumentos que desea pasar>)
# Creating 3 threads that execute the same function with different parameters thread1 = threading.Thread( target=print_squares, args=("thread1", [1, 2, 3, 4, 5])) thread2 = threading.Thread( target=print_squares, args=("thread2", [6, 7, 8, 9, 10])) thread3 = threading.Thread( target=print_squares, args=("thread3", [11, 12, 13, 14, 15]))
- Ahora tenemos que empezar la ejecución. La clase Thread tiene un método start() que transita el hilo en modo de ejecución. Los subprocesos se ejecutarán hasta que no se completen.
# Start the threads thread1.start() thread2.start() thread3.start()
- Podemos bloquear la ejecución del programa mientras no se completan todos los hilos usando el método join() de la clase Thread.
# Join the threads before moving further thread1.join() thread2.join() thread3.join()
A continuación se muestra el código completo:
Python3
# Import module import threading import time # A sample function to print squares def print_squares(thread_name, numbers): for number in numbers: print(thread_name, number**2) # Produce some delay to see the output time.sleep(1) # Creating 3 threads that execute the same # function with different parameters thread1 = threading.Thread(target=print_squares, args=("thread1", [1, 2, 3, 4, 5])) thread2 = threading.Thread(target=print_squares, args=("thread2", [6, 7, 8, 9, 10])) thread3 = threading.Thread(target=print_squares, args=("thread3", [11, 12, 13, 14, 15])) # Start the threads thread1.start() thread2.start() thread3.start() # Join the threads before # moving further thread1.join() thread2.join() thread3.join()
Producción:
Publicación traducida automáticamente
Artículo escrito por deepanshu_rustagi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA