Skip to content
Generación Freelancer
Menu
  • Inicio
  • Noticias
  • Tutoriales
Menu

Introducción a los hilos en Python [Understand With Examples]

Posted on noviembre 13, 2022

La creación de subprocesos en Python permite a los procesadores ejecutar varias partes del programa simultáneamente utilizando los recursos correctamente. El concepto de subprocesamiento aumenta la velocidad de ejecución de un programa. Python Threading se utiliza principalmente para tareas relacionadas con Entrada/Salida, es decir, tareas que pasan más tiempo en Entrada/Salida que en procesar (o) el cálculo.

La ventaja de los subprocesos se puede conocer mejor cuando se compara un programa de Python de un solo subproceso con un programa de subprocesos múltiples.

Introducción a los hilos en Python [Understand With Examples]

Programa Python de un solo subproceso

El siguiente código es un programa simple de un solo subproceso:

Código

# import necessary packages
import time

# function
def executeTask():
print('Task Execution started')
time.sleep(2)
print('Execution completed')

program_startTime=time.perf_counter()

# execute 3 tasks
executeTask()
executeTask()
executeTask()

program_endTime=time.perf_counter()

print(f'Time Taken to complete all tasks : {program_endTime-program_startTime:0.3f} seconds')

Producción

Comenzó la ejecución de la tarea
Ejecución completada
Comenzó la ejecución de la tarea
Ejecución completada
Comenzó la ejecución de la tarea
Ejecución completada

Tiempo necesario para completar todas las tareas: 6.030 segundos

Explicación

  • Biblioteca de tiempo importada para usar los métodos sleep () y perf_counter ().
  • La función executeTask() está definida de tal forma que ejecuta una tarea con un tiempo de pausa de 2 segundos.
  • El método sleep () hace que la CPU esté inactiva durante ciertos segundos.
  • time.perf_counter () se utiliza para anotar el tiempo de inicio y finalización de la ejecución del programa para encontrar el
  • tiempo total de ejecución, es decir, hora de finalización – hora de inicio.
  • Llamamos a la función executeTask 3 veces, es decir, para ejecutar 3 tareas.

En cuanto al programa, la ejecución de la tarea 1 comienza y se detiene durante 2 segundos, luego completa la ejecución de la tarea y la ejecución de la segunda tarea comienza y luego se detiene durante 2 segundos y finaliza su ejecución, y lo mismo se repite para la tarea 3.

hilo de pitón único

Aquí el uso de recursos es mínimo porque no se realizan actividades al mismo tiempo. El tiempo de pausa entre 2 actividades no es utilizado por otras actividades/procesos. Entonces, para aumentar la velocidad de ejecución y el uso de recursos, entra en juego el concepto de subprocesamiento.

Programa multiproceso en Python

Para implementar el concepto de subprocesos en Python, importe la clase Thread desde el módulo de subprocesos. Para crear el subproceso en python, use la función Subproceso que toma dos parámetros de destino, que especifican la función, y otros parámetros de argumentos de tipo tupla, que especifican los argumentos.

A continuación se muestra la sintaxis para crear un hilo.

Thread1 = Thread(target=functionName, args=(arg1,arg2,..))

Hay dos métodos utilizados en los programas multiproceso. Estoy:

  • Comienzo() – El método start () ayuda a iniciar la ejecución del hilo.
  • Articulación () – El método join () permite que el subproceso principal espere a que se complete el segundo u otro subproceso antes de finalizar.

Echemos un vistazo a un programa Python simple de subprocesos múltiples sin argumentos:

Código

# import necessary packages
import time
from threading import Thread

# function
def executeTask():
print('Task Execution started')
time.sleep(2)
print('Execution completed')

program_startTime=time.perf_counter()

# create three threads
thread1 = Thread(target=executeTask)
thread2 = Thread(target=executeTask)
thread3 = Thread(target=executeTask)

# start threads
thread1.start()
thread2.start()
thread3.start()

# wait for threads to complete
thread1.join()
thread2.join()
thread3.join()

program_endTime=time.perf_counter()

print(f'Time Taken to complete all tasks : {program_endTime-program_startTime:0.3f} seconds')

Producción

Comenzó la ejecución de la tarea
Comenzó la ejecución de la tarea
Comenzó la ejecución de la tarea
Ejecución completada
Ejecución completada
Ejecución completada
Tiempo necesario para completar todas las tareas: 2023 segundos

Explicación

Biblioteca de tiempo importada para usar los métodos sleep (), perf_counter () y la clase Thread para crear Thread.

  • La función executeTask() está definida de tal forma que ejecuta una tarea con un tiempo de pausa de 2 segundos.
  • sleep () hace que la CPU esté inactiva durante ciertos segundos.
  • time.perf_counter () se usa para anotar la hora de inicio y la hora de finalización de la ejecución del programa para encontrar el tiempo total de ejecución, es decir, la hora de finalización, la hora de inicio.
  • Creé 3 hilos usando el método Thread ().
  • El método start () se utiliza para iniciar la ejecución de hilos.
  • El método join () permite que el subproceso principal espere a que se completen los otros subprocesos.

A continuación se muestra la vista pictórica de la ejecución de tres subprocesos para el programa anterior.

subprocesos múltiples en python

La diferencia entre los programas de subproceso único y los de subprocesos múltiples es que los tres subprocesos/tareas se ejecutarán simultáneamente en el programa de subprocesos múltiples.

Podemos ver en la salida de resultados que el tiempo de ejecución es solo 2.023 segundos en lugar de 6 segundos como para el programa de un solo subproceso debido al mayor uso de recursos.

Durante el tiempo de suspensión de un subproceso, la CPU no espera a que el subproceso actual complete su ejecución. Procese los otros hilos/actividades.

Cuando el programa comience su ejecución, el intérprete creará el hilo principal y el programa creará los tres hilos/tareas.

A continuación se muestra el programa multihilo que pasa argumentos mientras se crea el hilo.

Código

# import necessary packages
import time
from threading import Thread

# function
def executeTask(number):
    print(f'Task {number} Execution started')
    time.sleep(2)
    print(f'Task {number} Execution completed')
    
program_startTime=time.perf_counter()
# list which stores all created threads
threads=[]
# create and start three threads
for i in range(1,4):
    thread = Thread(target=executeTask,args=(i,))
    threads.append(thread)
    thread.start()

for thread in threads:
    thread.join()

program_endTime=time.perf_counter()

print(f'Time Taken to complete all tasks : {program_endTime-program_startTime:0.3f} seconds')

Producción

Tarea 1 Ejecución iniciada
Comenzó la ejecución de la tarea 2
Comenzó la ejecución de la tarea 3
Tarea 1 Ejecución completada
Tarea 2 Ejecución completada
Tarea 3 Ejecución completada

Tiempo necesario para completar todas las tareas: 2024 segundos

Solo hay algunas diferencias con el código anterior, es decir, un programa multiproceso sin argumentos, en comparación con el código anterior, es decir, un programa multiproceso con argumentos.

  • Definido el método executeTask() con un argumento.
  • Pasó una tupla al argumento args al crear un hilo.

Nota: El orden de ejecución de la tarea/subproceso es incorrecto. Aquí todas las tareas se realizan en orden según la entrada, pero no siempre sucederá.

Más tutoriales de Python:

  • Programa Python para invertir un número
  • ¿Cómo usar Python para el desarrollo de juegos de navegador?
  • Programa Python para encontrar la suma de los dígitos [5 Methods]
  • Programa Python para comprobar si un número es un cuadrado perfecto
  • 35 divertidos y mejores memes de programación en Python
  • 60 mejores citas sobre desarrollo de software
  • Envío de correos electrónicos usando Python con archivos adjuntos de imagen y PDF

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Recent Posts

  • Los 5 mejores sitios web Generador de voz Yoda, software de texto a voz
  • Los 10 mejores libros de diseño de juegos para leer en 2023
  • Riesgos y beneficios de subcontratar desarrolladores de América Latina
  • Cómo contratar a un desarrollador .NET en 2023
  • Beneficios de Microsoft Office 365 para pequeñas empresas

Recent Comments

No hay comentarios que mostrar.

Archives

  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022

Categories

  • Noticias
  • Tutoriales
©2023 Generación Freelancer | Design: Newspaperly WordPress Theme