gevent 实现单线程下的socket链接
Posted my-love-is-python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gevent 实现单线程下的socket链接相关的知识,希望对你有一定的参考价值。
通过gevent实现socket的多并发
server 端:
import gevent
from gevent import socket, monkey
monkey.patch_all() #进行IO标记
def server(port):
s = socket.socket()
s.bind((‘localhost‘, port))
s.listen()
while True:
conn, addr = s.accept()
gevent.spawn(handle, conn) #一接收信号就进行IO切换
def handle(conn):
try:
data = conn.recv(1024)
print(data)
conn.send(data)
if not data:
conn.shutdown(socket.SHUT_WR) #如果没有数据就关掉socket
except exception as ex:
print(ex)
finally:
conn.close()
if __name__==‘__main__‘:
server(8000)
client 端:
import socket, time
client = socket.socket()
client.connect((‘localhost‘, 6000))
while True:
data = input(‘>>‘)
client.send(data.encode(‘utf-8‘))
if not data:
break
d = client.recv(1024)
print(‘recv:‘, d.decode())
以上是关于gevent 实现单线程下的socket链接的主要内容,如果未能解决你的问题,请参考以下文章
python3 单线程(gevent)实现并发的socket通讯