asynio aprendizaje diario

Hoy en día, el uso de asynio aprendizaje, todavía hay esperanza de que no está bien es el gran Dios señalador.

Síncrona y asíncrona, síncrona lo que es, ¿cuál es el asíncrona?

medios de sincronización de la aplicación del código, y el siguiente es del orden de ejecución, si se encuentra con las operaciones de IO u otras operaciones que consumen mucho tiempo, todo el programa serán bloqueados allí, por lo que la CPU de la computadora es un enorme desperdicio

Asíncronos y síncronos exactamente lo contrario, que no espere a que esta consumen mucho tiempo vuelve operación el resultado, la ejecución del programa continúa en la siguiente transacción, después de que la transacción ha sido procesada para informar al programa principal, a continuación, se devuelven los resultados, por lo que podemos aprovechar de un gran equipo recursos de la CPU, y la eficiencia del código serán altos

A diferencia de asynio multihilo, aunque la operación asincrónica, pero es esencialmente un código de sincronización

# El siguiente es el código para simular la solicitud de página asincrónica, el efecto deseado se imprime al instante 10 hola palabra, en lugar de esperar hasta que un análisis completo de una página web, pero al mismo tiempo al analizado

importación asyncio 

#这里模仿请求网页的代码
asíncrono def get_html (url):
     Await asyncio.sleep (url) 
    de impresión ( " hola palabra: {} " .formato (url)) 


si __name__ == " __main__ " : 
    loop = asyncio. get_event_loop () 
    c = [get_html ( 2 ) para i en rango ( 10 )] 
    un = loop.run_until_complete (asyncio.wait (c)) 

    #结果: 
    # hola palabra: 2 
    # palabra hello: 2 
    palabra # hello:2 
    # hola palabra: 2 
    # palabra hola: 2 
    # palabra hola: 2 
    # palabra hola: 2 
    # palabra hola: 2 
    # palabra hola: 2 
    # palabra hola: 2

Debido asynio no admite solicitudes HTTP asíncronas, si las solicitudes están en el interior con una biblioteca u otra solicitud página web de la biblioteca ya que las solicitudes se sincronizan biblioteca

Aquí el conocimiento aprendido en la grabación de un punto, asynio es apoyar socket asincrónico, por lo que el uso de manera que aquí toma de pedir resultados HTTP, también se espera que la salida resultante, la misma URL se imprimen de forma simultánea

importación asyncio
 de urllib.parse importación urlparse 


# 这里模仿请求网页的代码 
asíncrono def get_html (url): 
    irul = urlparse (url) 
    de host = iurl.netloc 
    ruta = iurl.path
     si camino == "" : 
        ruta = " / " 
    request_html = " GET {} HTTP / 1.1 \ r \ nHOST: {} \ r \ nConnection: close \ r \ n \ r \ n " .formato (path, host) 
    lector, escritor = asyncio.open_connection await (host = anfitrión , port = 80)    #Debido a que esta conexión es se requiere una operación que consume tiempo para lograr el efecto asíncrono lo esperan 
    # porque la solicitud está siendo usada escritor En consecuencia, la toma es equivalente a enviar al servidor 
    # bytes de datos deben ser transmitidos, la codificación Unicode no puede ser 
    escritor. Write (request_html.encode ( "UTF-8 " )) 
    datos = B "" 
    la asíncrono para D en Reader: 
        Data + = D
     # impresas directamente Imprimir (datos)
     devolver datos SI el __name__ == " __main__ " : 
    url_list = [ " http://www.guqin.cc/portal.php " , 
                
    

 " Http://www.guqin.cc/thread-2564-1-1.html " , 
                 " http://www.guqin.cc/thread-2564-1-1.html " , 
                 " http: // www .guqin.cc / hilo-2564-1-1.html " " http://www.guqin.cc/thread-2564-1-1.html " ] 
    bucle = asyncio.get_event_loop () 
    c = [get_html ( url) para url en url_list] 
    un = loop.run_until_complete (asyncio.wait (c))

 

Supongo que te gusta

Origin www.cnblogs.com/witt-chen/p/12534436.html
Recomendado
Clasificación