Threading em Python: aprenda a trabalhar com threads em Python

Este artigo sobre Threading em Python dirá o que são Threads, seus tipos, como iniciá-los e utilizá-los da melhor maneira possível

Hoje, é uma das linguagens de programação mais amadas em todo o mundo. Desde seu início na década de 1990, ela conquistou um grande número de seguidores, entusiastas e programadores que trabalham todos os dias para tornar esta linguagem de programação melhor. Entre os muitos recursos que vêm embutidos no ecossistema Python, um que mais se destaca é o Threading. Portanto, neste artigo, falaremos tudo sobre Threading em Python, como você pode fazer uso dele junto com suas vantagens e desvantagens.

As dicas a seguir serão abordadas neste artigo,



Vamos começar

Encadeamento em Python

O que é um Thread em Python?

Um thread em Python pode simplesmente ser definido como um fluxo de execução separado. O que isso significa simplesmente que em seu programa, dois processos diferentes serão executados ao mesmo tempo. Um aspecto interessante de threading em Python é o fato de que, após a versão 3, vários threads em Python não são executados ao mesmo tempo, mas apenas parecem.

Embora seja uma sensação incrível estar executando dois processos diferentes ao mesmo tempo, é preciso entender que a versão atual do Python 3 e superior está codificada de tal forma que apenas o processo pode ser executado em um determinado momento. No entanto, se você precisar de dois ou mais processos ao mesmo tempo em CPython, precisará codificar alguns de seus códigos em outras linguagens também, como C, C ++ e Java, e depois executá-los por meio de multithreading em Python.

Uma das vantagens mais conhecidas do threading em Python é sua capacidade de fornecer um ganho em clareza de design.

Antes disso, temos alguma ideia sobre Threading em Python, vamos entender como iniciar um thread,

Iniciando um Thread em Python

Agora que você está acostumado com a definição de thread em Python, vamos dar uma olhada em um exemplo de como você pode criar seu próprio thread em Python. Para criar um thread em Python, primeiro você precisa importar a biblioteca de threads e, em seguida, instruí-la a start () conforme mostrado no exemplo abaixo:

importar registro importar threading importar tempo def thread_function (nome): logging.info ('Tópico% s: iniciando', nome) time.sleep (2) logging.info ('Thread% s: finalizando', nome) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') logging.info ( 'Main & ampampampnbsp & ampampampnbsp: before create thread') x = threading.Thread (target = thread_function, args = (1,)) logging.info ('Main & ampampampnbsp & ampampampnbsp: before running thread') x.start () logging.info ('Principal & ampampnbsp & ampampampnbsp: aguarde a conclusão da discussão ') # x.join () logging.info (' Main & ampampampnbsp & ampampampnbsp: all done ')

Resultado

Saída - Encadeamento em Python - Edureka

Ao executar um thread em Python, você o passa adiante como uma função que contém uma lista de argumentos que ele precisa para executar. No exemplo compartilhado acima, você está instruindo o Python a executar o thread, thread_function () e passá-lo para 1 como um argumento.

Quando você executa o programa acima, a saída será semelhante a esta.

A próxima parte deste artigo sobre ‘Threading em Python’ vamos ver o que são os threads daemon,

O que são Daemon Threads?

Na terminologia técnica, o daemon pode ser definido como um processo que é executado principalmente em segundo plano. No entanto, em Python, um thread daemon tem um significado muito específico. Em Python, um daemon thread será encerrado no momento em que o programa for encerrado, embora em outras linguagens de programação ele continue sendo executado em segundo plano. Se, em um determinado programa, uma thread não estiver programada como thread daemon, o interpretador aguardará que ela termine sua operação e apenas desligará o interpretador.

Para entender melhor esse conceito, dê uma olhada no exemplo acima. Na penúltima linha, o programa espera alguns segundos depois de concluir todas as suas tarefas. Isso ocorre porque ele está aguardando que o encadeamento não daemônico conclua sua operação e saia da interface. Assim que o thread terminar sua operação, somente o programa será encerrado.

Agora, vamos modificar o programa acima e ver o que acontece, se inserirmos um thread daemon no código.

Novo código: x = threading.Thread (target = thread_function, args = (1,), daemon = True)

Quando você executa o programa acima com as modificações feitas, ele se parecerá com isto.

A diferença entre essas duas saídas é que a linha final está faltando na última. O thread_function () não teve a chance de ser concluído, porque inserimos um thread daemon e assim que chegou ao fim, ele saiu do programa.

Entrando em um Tópico

como converter uma string binária em decimal em java

Agora que você aprendeu sobre o conceito de criação de thread em Python, junto com o conceito de thread daemônico, vamos descobrir como unir threads em Python.

Usando a função join () em Python, você pode unir dois threads diferentes e também instruir um a aguardar o outro até terminar sua execução. Este recurso muitas vezes será útil quando você estiver codificando grandes aplicativos e precisar que todos os processos sejam executados em uma ordem específica

A parte final deste artigo sobre ‘Threading em Python’ mostrará os vários threads de trabalho,

Trabalhando com vários threads

Nos exemplos acima, falamos sobre como você pode trabalhar com dois threads ao mesmo tempo. Mas e se, em uma determinada situação, você precisar trabalhar com vários threads ao mesmo tempo. Para melhor compreensão da situação, dê uma olhada no exemplo abaixo.

importar registro importar threading importar tempo def thread_function (nome): logging.info ('Tópico% s: iniciando', nome) time.sleep (2) logging.info ('Thread% s: finalizando', nome) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') threads = list ( ) para o índice no intervalo (3): logging.info ('Main & ampampampnbsp & ampampampnbsp: create and start thread% d.', index) x = threading.Thread (target = thread_function, args = (index,)) threads.append (x ) x.start () para índice, encadeamento em enumerar (encadeamentos): logging.info ('Main & ampampampnbsp & ampampampnbsp: before join thread% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: encadeamento% d feito ', índice)

Resultado

No programa acima, seguimos o mesmo procedimento de importar a biblioteca de threads, iniciar a thread, criar várias threads e, em seguida, usar a função join () para combinar todos e serem executados em uma ordem particular.

Quando você executa o programa acima, o resultado será parecido com este.

Conclusão

É um dos recursos mais úteis do Python. Ao usá-lo da maneira correta, você pode tornar todo o seu processo de codificação muito mais fácil e eficiente. Com o artigo acima, esperamos que você tenha aprendido o básico sobre threading e continue a usá-lo em sua programação diária.

Então é isso galera, espero que tenham gostado desse artigo.

Para obter conhecimento aprofundado sobre Python e seus vários aplicativos, você pode para treinamento online ao vivo com suporte 24 horas nos sete dias da semana e acesso vitalício.

Tem alguma questão para nós? Mencione-os na seção de comentários deste artigo e entraremos em contato com você.