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.790 ]

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

Outros recursos no OpenOffice: colunas, fundo e bordas

Bodhi Linux com o belíssimo Enlightnment

Uso de terminologia imprópria com software livre

OCS Inventory e seus clientes - Instalação e configuração

Já fez seu "BACKUP" hoje? Não? Então vamos conversar sobre isso

Leitura recomendada

Arduino com Bluetooth e pySerial

Reconhecimento de placas de veículos com OpenALPR

Python + ADB

Crie um bot para Telegram e gerencie a escala de plantonistas

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