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: 13.538 ]

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

Captive Portal Customizado

Instalação dual boot UEFI Linux Mint/Ubuntu com Windows 8.1/10

Gerenciamento centralizado de usuários de rede com GOSA

Uma geral pela configuração pós-instalação do Slackware

Formatação de células na planilha do OpenOffice

Leitura recomendada

Gerar senhas seguras com Python

Introdução ao clib (Command Line Book)

Embutindo imagens nos scripts Python para aplicações Tkinter

Crie um bot para Telegram e gerencie a escala de plantonistas

Gerar Códigos QRCode 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