Pular para o conteúdo

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.
Perfil removido removido
Hits: 14.760 Categoria: Python Subcategoria: Outros
  • Indicar
  • Impressora
  • Denunciar

Parte 4: 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.

   1. Introdução
   2. Implementação em Python - Primeiro método
   3. Implementação em Python - Segundo método
   4. Coordenando threads concorrentes

Jogando Xadrez online e gratuitamente no Linux

Pesquisa com slocate, locate e updatedb

Prevenindo atualização de pacotes no APT-GET

Instalando Nextcloud Server no Fedora 31

Enviando alertas do Snort por SMS

Como baixar vídeos do Facebook via terminal

Python: automatizando a extração de informações na web com expressões regulares

Python - Uma linguagem orientada a objetos

Trabalhando com permutações em ordem lexicográfica crescente

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.