一、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)