Python - processos assíncronos

Índice
No momento em que entramos no mundo do processamento múltiplo, servidores e solicitações variadas, devemos saber que existem vários tipos de respostas ou comportamentos, o síncrono e ele assíncrono.
O primeiro consiste em atender um pedido de acordo com uma teoria de filas, fifo, lifo etc. Ou seja, até que o processo seja finalizado ele não vai para outro, visto esse comportamento, não seria problema para um programa que maneja Tópicos uma vez que poderia gerar vários Tópicos para cada solicitação que atende a funções específicas.
Então temos o assíncrono que nos ajuda a servir com um mesmo tópico vários pedidos dependendo do seu estado, de forma que se vários pedidos forem executados enquanto um processa algo, podemos atender ao próximo ou talvez nem devamos esperar por um pedido para enviar dados ao cliente:

Como podemos ver na imagem, é feita uma simulação do funcionamento de um chat onde é revisto até que haja uma mensagem a transmitir.
Processos de entrada e saída assíncronos
Quando fazemos uma leitura assíncrona das solicitações do cliente, não é necessário que façamos a leitura completa da mensagem inicialmente, mas podemos ver aos poucos, graças à velocidade de processamento.
Para trabalho assíncrono em Pitão Temos duas funções que podem nos ajudar, uma é selecionar e o outro é votação, dos quais o último está disponível apenas para ambientes UNIX, então pode ser uma condição que coloquemos um limite se quisermos fazer um programa multiplataforma, porém é a solução que melhor dimensiona, então devemos levar esses detalhes em consideração.
O selecionar função leva 3 sequências como argumentos obrigatórios, com um quarto argumento que é opcional e contém o tempo esgotado Em segundos, as sequências são conexões pelas quais vamos esperar, sendo que 3 correspondem ao seguinte: entrada, saída, condições excepcionais (erros, exceções, etc).
Se não especificarmos um tempo esgotado, a função selecionar ele irá esperar até que uma das sequências esteja pronta para ação, caso contrário, se especificarmos um tempo limite, os blocos irão esperar pelo tempo correspondente. Os valores retornados pela função representam um subconjunto ativo de cada sequência, por exemplo, a primeira sequência retornada será uma sequência de entrada onde teremos algo para ler.
Vamos ver o seguinte exemplo de código de como implementar um servidor usando o selecionar função:
 importe socket, selecione s = socket.socket () host = socket.gethostname () port = 1234 s.bind ((host, porta)) s.listen (5) entradas = [s] enquanto True: [b] rs, ws, es = select.select (inputs, [], []) [/ b] para r em rs: se r for s: c, addr = s.accept () print 'Conexão obtida de', addr inputs.append (c) else: try: data = r.recv (1024) desconectado = não dados exceto socket.error: desconectado = True se desconectado: print r.getpeername (), 'desconectado' inputs.remove (r) else: imprimir dados 

Como podemos ver, quando chamamos o selecionar função passando as 3 sequências obrigatórias, passamos a variável entradas, que está vinculado ao que o servidor captura enquanto escuta na porta TCP 1234, então iteramos para mostrar as informações.
Como podemos ver, este aspecto da implementação é bastante simples e o limite será dado pela nossa criatividade na hora de fazer o programa.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave