python IO非阻塞模型
Posted wt7018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python IO非阻塞模型相关的知识,希望对你有一定的参考价值。
server端
import socket sk = socket.socket() sk.bind((‘127.0.0.1‘, 8010)) sk.setblocking(False) # sk.listen() conn_l = [] del_conn = [] while True: try: conn, addr = sk.accept() # 不阻塞,但是没人连我会报错 print(‘建立连接了:‘, addr) conn_l.append(conn) except BlockingIOError: for con in conn_l: try: msg = con.recv(1024) # 非阻塞,如果没有数据就报错 if msg == b‘‘: del_conn.append(con) continue print(msg) con.send(b‘bye‘) except BlockingIOError: pass for con in del_conn: con.close() conn_l.remove(con) del_conn.clear()
client端
import time import socket import threading def func(): sk = socket.socket() sk.connect((‘127.0.0.1‘, 8010)) sk.send(b‘hello‘) time.sleep(1) print(sk.recv(1024)) sk.close() for i in range(2): threading.Thread(target=func).start()
以上是关于python IO非阻塞模型的主要内容,如果未能解决你的问题,请参考以下文章
Python并发编程-IO模型-非阻塞IO实现SocketServer
{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO
基础入门_Python-网络编程.分分钟掌握阻塞/非阻塞/同步/异步IO模型?