Introdução a Threads e como implementá-las em Python

Explicação introdutória do que são as threads e como implementá-las em Python.

[ Hits: 12.333 ]

Por: Perfil removido em 30/10/2018


Coordenando threads concorrentes



Quando se começa a trabalhar com threads é necessário garantir que não haja conflito entre elas, para isso há vários objetos advindos do módulo threading para nos ajudar, nesse artigo trabalharemos especificamente com as Locks.

Primeiro criamos o objeto:

trava = Lock()

Há dois métodos que podemos usar:
  • trava.acquire() -- Com esse método a Thread que invocou agora "carregará" essa trava
  • trava.release() -- A Thread agora "solta" a trava

Se a Thread A carrega a trava X, e a Thread B tenta chamar o método acquire() desta trava, B congelará sua atividade até que seja possível carregar essa trava, ou seja, quando a Thread A chamar o método release() de X.

Por exemplo, para impedir que uma Thread B acesse a variável X enquanto Thread A a modifica, basta Thread A fazer o seguinte:

x = 0
trava.acquire()
x = 30
trava.release()

Desta forma, toda Thread concorrente que tentar modificar a variável x enquanto A carrega uma trava, congelará, voltando a sua atividade uma vez que esta trava esteja disponível.

Concluindo: locks servem para congelar threads que tentam obter travas previamente adquiridas por uma thread concorrente.

Indo além

Visto os conceitos básicos da programação multithread, para o leitor que desejar ir além, recomendo o estudo dos seguintes tópicos:
  • Outras formas de coordenação de threads: Semáforos, Events, Rlocks.
  • Módulo multiprocessing, que irá fornecer outro método de implementar diversas funções em um único programa, porém sem o uso de threads.
  • Se estiver usando Linux, o uso do fork para clonagem de processos, usando a biblioteca 'os'.

Espero que tenham conseguido aprender com esse artigo, até a próxima.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Implementação em Python - Primeiro método
   3. Implementação em Python - Segundo método
   4. Coordenando threads concorrentes
Outros artigos deste autor

Como instalar o LAMP no openSUSE Leap e Tumbleweed

Instale/Reinstale/Recupere seu sistema sem perder seus arquivos

Criando um álbum de fotos no Linux

Trabalhando com a extensão .tar

Swing e gerenciadores de layout

Leitura recomendada

Integração do ChatGPT em uma API Python

Clicador automático de Tinder com Python

RapidScan - Multi-Tool WEB Vulnerability Scanner

Python - Usando requests anônimos através da rede Tor

Gerar senhas seguras com Python

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts