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

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

PuTTY - Estabelecendo Chave Secreta com OpenSSH

Usando tabelas no editor de textos do OpenOffice

Instalando a impressora Canon i250 no Linux

FreeRADIUS - Noções básicas - Parte I

Mozilla Firefox: um guia de instalação para iniciantes

Leitura recomendada

Programe em Python no jogo Minecraft com seu filho ou sozinho

Python + ADB

tux-gpt - Assistente de IA para o Terminal

Gerar senhas seguras com Python

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