阅读量:3
在Python中,select()
是一个用于多路复用的函数。它可以同时监视多个文件对象(包括套接字)的读写状态,当其中任何一个文件对象就绪(可读或可写)时,select()
函数将返回该文件对象。
select()
函数的基本语法如下:
read_list, write_list, error_list = select.select(inputs, outputs, exceptions, timeout)
参数说明:
inputs
:需要监视的可读对象的列表。outputs
:需要监视的可写对象的列表。exceptions
:需要监视的异常对象的列表。timeout
:可选参数,设置超时时间,单位为秒(默认为阻塞状态,直到有就绪的对象)。
返回值说明:
read_list
:可读对象列表中就绪的对象。write_list
:可写对象列表中就绪的对象。error_list
:异常对象列表中就绪的对象。
示例用法:
import select import socket # 创建套接字并监听 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 8000)) server_socket.listen(5) inputs = [server_socket] while True: # 使用select函数进行监视 readable, writable, exceptional = select.select(inputs, [], []) for sock in readable: if sock is server_socket: # 有新的连接请求 client_socket, client_address = server_socket.accept() inputs.append(client_socket) else: # 有数据可读 data = sock.recv(1024) if data: print('Received:', data.decode()) else: # 客户端断开连接 sock.close() inputs.remove(sock)
以上示例中,使用select()
函数来监视套接字对象的可读状态。当有新的连接请求时,将新的客户端套接字添加到inputs
列表中,当客户端发送数据时,将数据打印出来。