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()
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()
Neste exemplo, tanto o carro1
quanto o carro2
correm ao mesmo tempo, o que torna o programa mais eficiente.
Passo a Passo
- Importação da Biblioteca: Importamos a classe
Thread
da bibliotecathreading
. - Definição das Funções: Definimos duas funções,
carro1
ecarro2
. - Criação das Threads: Criamos duas threads,
t1
et2
, associando cada uma a uma função. - Início das Threads: Iniciamos as threads com o método
start()
. - 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.
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/