Article image
Carlos Soares
Carlos Soares05/07/2024 15:15
Share

Executando Tarefas Simultâneas em Python com a Biblioteca Threading

  • #Python

Olá galera Dev!

Hoje vamos falar sobre a biblioteca threading do Python, que é uma ferramenta poderosa para executar várias tarefas ao mesmo tempo, conhecida como multithreading. A biblioteca threading permite criar e gerenciar threads, que são unidades independentes de execução que podem rodar simultaneamente no seu programa, gerando ganho de tempo de exeução, por rodar mais d euma função ao mesmo tempo.

Mas o que é esse tal de Threading?

A biblioteca threading é usada para executar várias operações ao mesmo tempo, o que pode melhorar significativamente a eficiência e a performance do seu código. Imagine que você tem várias tarefas que podem ser executadas de forma independente, como baixar arquivos, processar dados, ou fazer requisições a APIs. Com a biblioteca threading, você pode executar todas essas tarefas ao mesmo tempo, em vez de esperar que uma termine para começar outra.

Vamos Fazer uma Analogia com Corrida de Carros

Para ficar mais fácil de entender, vou fazer uma analogia com uma corrida de carros utilizando o conceito de threads. Imagine que você tem duas funções no seu programa, cada uma representando um carro. Sem o uso da biblioteca threading, o primeiro carro (função) precisa completar todo o percurso antes do segundo carro (função) começar a andar. Isso é chamado de execução sequencial.

Agora, com a biblioteca threading, os dois carros podem correr juntos. Cada carro (função) pode avançar de forma independente, sem precisar esperar o outro. Isso é chamado de execução paralela ou multithreading.

Vou mostrar abaixo como isso funciona no código.

Exemplos de Código

Sem threading (execução sequencial)

import time

def carro1():
  for i in range(5):
      print("Carro 1 está correndo...")
      time.sleep(1)

def carro2():
  for i in range(5):
      print("Carro 2 está correndo...")
      time.sleep(1)

carro1()
carro2()

image

Neste exemplo, o carro1 precisa terminar de correr antes que o carro2 possa começar.

Com threading (execução paralela)

import time
from threading import Thread

def carro1():
  for i in range(5):
      print("Carro 1 está correndo...")
      time.sleep(1)

def carro2():
  for i in range(5):
      print("Carro 2 está correndo...")
      time.sleep(1)

# Criando threads
t1 = Thread(target=carro1)
t2 = Thread(target=carro2)

# Iniciando threads
t1.start()
t2.start()

# Esperando as threads terminarem
t1.join()
t2.join()

image

Neste exemplo, tanto o carro1 quanto o carro2 correm ao mesmo tempo, o que torna o programa mais eficiente.

Passo a Passo

  1. Importação da Biblioteca: Importamos a classe Thread da biblioteca threading.
  2. Definição das Funções: Definimos duas funções, carro1 e carro2.
  3. Criação das Threads: Criamos duas threads, t1 e t2, associando cada uma a uma função.
  4. Início das Threads: Iniciamos as threads com o método start().
  5. Esperando as Threads: Usamos join() para esperar que ambas as threads terminem.

Exemplos de Uso no Dia a Dia

A biblioteca threading pode ser utilizada em várias situações no dia a dia, como:

  • Baixar arquivos simultaneamente: Ideal para baixar múltiplos arquivos da internet ao mesmo tempo, otimizando o tempo de download.
  • Processar dados em paralelo: Útil para realizar cálculos ou processar grandes volumes de dados simultaneamente.
  • Executar múltiplas requisições a APIs: Perfeito para fazer várias chamadas de API ao mesmo tempo, acelerando a obtenção de dados.
  • Tarefas de I/O (Entrada/Saída): Para lidar com operações de leitura e escrita em arquivos ou banco de dados de forma simultânea.

Concluindo...

Neste artigo, exploramos a poderosa biblioteca threading do Python, uma ferramenta essencial para executar várias tarefas simultaneamente e melhorar a eficiência do seu código. Utilizando uma analogia com uma corrida de carros, vimos como o multithreading permite que funções rodem em paralelo, ao invés de de forma sequencial, otimizando o tempo de execução.

Eu utilizei a biblioteca threading no meu projeto J.A.R.V.I.S. , utilizando para executar o assistente de voz Jarvis em uma thread separada,permiitndo que a interface gráfica (GUI) continuasse responsiva enquanto o assistente de voz realiza suas tarefas em segundo plano.

https://www.linkedin.com/posts/carlos-cgs_do-zero-ao-jarvis-carlos-cgs-activity-7202264831473684480-HX9y?utm_source=share&utm_medium=member_desktop

Espero ter ajudado um pouco no seu caminho de descobertas na sua jornada Dev. Até a próxima!

Segue o link da documentação: https://docs.python.org/pt-br/3/library/threading.html

"Vamos Disseminar os Conhecimentos e Transbordar Tudo que Aprendemos"

Segue lá no GitHub: https://github.com/Carlos-CGS

Segue lá no LinkedIn: https://www.linkedin.com/in/carlos-cgs/

Share
Comments (0)