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

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

Instalação e configuração do Ubuntu Gusty Gibbon na linha de notebooks HP/Compaq

Atualizando do Slackware 9 para 10.0

Como customizar uma imagem ISO do Ubuntu

wpa_supplicant.conf - Configuração para WPA2-PSK

O kernel Linux está inchado... Mas, calma, não é bem assim!

Leitura recomendada

OAK: Câmera Open Source de Visão Computacional com AI

Programe em Python no jogo Minecraft com seu filho ou sozinho

Gerar senhas seguras com Python

Python para pesquisadores: material didático

Reconhecimento de placas de veículos com OpenALPR

  
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