Exemplo de tubo Python

Exemplo de tubo Python
O Python é uma linguagem rica em recursos que suporta todos os conceitos de programação mais recentes e tradicionais. O uso de tubos está sob o conceito de comunicação entre processos, na qual dois ou mais processos trocam dados ou informações entre si. Isso acontece apenas quando dois ou mais processos estão funcionando simultaneamente, descrevendo a funcionalidade do processamento paralelo. Para saber por que você deve usar os tubos Python e entender como eles são implementados nesta linguagem de programação, você terá que ler este artigo.

O que é um cano em python?

O processo que passa sobre essas informações grava para o tubo, enquanto o processo que recebe essas informações é lida no tubo. Assim como outras linguagens de programação, o Python também suporta a implementação de tubos.

Por que devo usar um cano em python?

Todos sabemos que a comunicação entre processos é um conceito de programação muito importante. Como o conceito de processamento paralelo foi introduzido, a funcionalidade e o poder dos computadores se expandiram em grande parte. Esse conceito nos permitiu executar vários processos em um momento que pode funcionar de forma independente. No entanto, às vezes queremos um processo para transmitir algumas informações a outra que precisa de processamento adicional. É aqui que os tubos em Python são úteis.

Um tubo em python pode ser facilmente usado para transmitir informações de uma extremidade para outra. Isso permite que dois processos trocem dados entre si, de maneira muito conveniente. A única coisa que precisa ser atendida ao implementar tubos em Python ou, nesse caso, em qualquer outra linguagem de programação é que, uma vez que um processo está escrevendo para o tubo, o descritor de arquivo de leitura deve ser bloqueado. Da mesma forma, quando um processo está lendo do tubo, o descritor de arquivo de gravação deve ser bloqueado. Isso é feito para garantir a integridade dos dados e que os dados sejam sincronizados entre os processos de leitura e escrita.

Para lançar mais luz sobre a implementação de tubos em Python, você deve passar pelo exemplo a seguir que formulamos para você aprender o uso de tubos em Python efetivamente.

Nota: Você pode usar o Spyder IDE para implementar um programa no Python usando o Windows 10 ou qualquer distribuição do Linux; No entanto, o “os.A função Fork () ”usada no exemplo a seguir é suportada apenas pelo Linux. Portanto, você não poderá implementar o seguinte código no Windows 10.

Exemplo de usar um tubo em Python:

Para representar o uso de um tubo em Python, queríamos implementar um código capaz de permitir a comunicação entre um processo pai e um processo infantil, usando um tubo. Para facilitar essa comunicação, você terá que dar uma olhada no seguinte código:

Neste código Python para implementação de tubos, primeiro importamos o módulo "OS" do Python, que facilitará essa implementação. Então, criamos um tubo com o “OS.Pipe () ”função e o atribuíram aos dois descritores de arquivo“ R ”e“ W ”para ler e escrever dados, respectivamente. Depois disso, queríamos gerar um processo infantil com o ID do processo, eu.e., PID que pode ser feito com a ajuda do “OS.Função de fork () ”. Então, temos uma declaração "se" que opera no PID maior que "0" i.e., Se o PID for o de um processo pai, somente então este bloco "se" será executado. Dentro deste bloco "se", o processo pai bloqueia primeiro o descritor de arquivo "leitura", eu.e., r, para que o processo pai possa escrever facilmente no tubo sem interrupções. Isso é feito usando o “os.Função (r) ”.

Depois disso, queríamos notificar o usuário através do console de que o processo pai agora está escrevendo para o tubo para o qual exibimos uma mensagem usando o comando "print". Em seguida, temos uma variável de "texto" para a qual atribuímos o texto que o processo pai deseja escrever no tubo.

Depois disso, chamamos o “OS.Write () ”função. Esta função aceita dois argumentos, eu.e., o descritor de arquivo de gravação e o texto a ser escrito no tubo. Quando essa função é chamada, o texto será gravado automaticamente no tubo. Depois disso, queríamos exibir o texto escrito no tubo em nosso console, o que faremos com a ajuda da função "impressão" decodificando a variável de texto.

Então, há uma declaração "mais" que funcionará se o PID não for maior que "0" i.e., O PID é o de um processo infantil; Somente então este bloco "else" será executado. Dentro deste bloco "else", o processo infantil bloqueia primeiro o descritor de arquivo "gravação", eu.e., W, para ler facilmente o texto escrito no tubo sem modificações. Isso é feito usando o “os.Função de fechar (W) ”.

Depois disso, queríamos notificar o usuário através do console de que o processo infantil agora está lendo o tubo para o qual exibimos uma mensagem usando o comando "print". Em seguida, atribuímos o valor do descritor de arquivo de leitura aberto "R" ao nosso descritor de arquivo de leitura inicialmente declarado. Por fim, queríamos exibir o texto lido do tubo pelo nosso processo infantil em nosso console usando a função "impressão". Depois de escrever este código Python no Spyder IDE, simplesmente o salvamos e depois o executamos.

Depois que esse código foi executado, sua saída acabou sendo um pouco mostrada na imagem abaixo:

Nesta saída, você pode ver que a primeira mensagem que apareceu no console foi “o processo pai escreve:”, o que implica que, atualmente, o descritor de arquivo de leitura está bloqueado à medida que o processo pai está escrevendo no tubo. A segunda mensagem que apareceu no console foi “Texto escrito: Bem -vindo ao meu filho!”, Que representa o texto escrito no tubo pelo processo pai. Então, a terceira mensagem exibida na saída foi “o processo infantil diz:”, que implica que o descritor de arquivos de gravação está bloqueado atualmente à medida que o processo infantil está lendo do tubo. Finalmente, a quarta mensagem que foi exibida no console foi “Texto lido: Bem -vindo ao meu filho!”, Que simplesmente representa o texto que foi lido do cano pelo processo infantil.

Dessa forma, você pode trabalhar com tubos em Python e criar exemplos ainda mais complexos nos quais você pode descrever uma comunicação completa entre os processos pai e filho.

Conclusão:

Conversamos brevemente sobre os tubos em Python no início deste artigo. Então fomos um pouco mais longe, explicando como eles funcionam e por que deveríamos usá -los em primeiro lugar. Depois disso, explicamos como os tubos poderiam ser implementados em Python com a ajuda de um exemplo útil em que um processo transmite algumas informações para outro. Depois de passar por este exemplo, você rapidamente entenderá como os tubos são implementados no Python e, em seguida, poderá implementar programas mais complexos nos quais dois processos se comunicam.