python中IO多路复用、协程

一、IO多路复用
    IO多路复用:检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写)

import socket
def get_data(key):
    client = socket.socket()
    client.setblocking(False)   #将原阻塞的位置变成非阻塞
    try:
        client.connect(("www.baidu.com",80))    #因为没有等待所以会报错
    except BlockingIOError as e:
        pass
    client.sendall(b"GET /s?wd=%s HTTP/1.0\r\nhost:www.baidu.com\r\n\r\n" %key)
    data_list = []
    while 1:
        data = client.recv(8096)
        if not data:
            break
        data_list.append(data)
    data = b"".join(data_list)
    print(data.decode("utf8"))
key_list = ["alex","sb","db"]
for item in key_list:
    get_data(item)
View Code

猜你喜欢

转载自www.cnblogs.com/qq849784670/p/9641711.html