#gevent模块测试
import gevent
def foo(a,b):
print('a = {}, b = {}'.format(a,b))
gevent.sleep(2)
print('Runing foo again')
def bar():
print('Runing in bar')
gevent.sleep(3)
print('Runing bar again')
#生成协程
f = gevent.spawn(foo,1,2)
g = gevent.spawn(bar)
print('==============')
gevent.joinall([f,g])
print('%%%%%%%%%%%%%%')
gevent.monkey.patch_all()处理后的高并发协程
import gevent
from gevent import monkey
monkey.patch_all()
from socket import *
from time import ctime
def server(port):
#接收客户端连接
s = socket()
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
s.bind(('0.0.0.0',port))
s.listen(3)
while True:
c,addr = s.accept()
print('Connect from {}'.format(addr))
#handler(c) 循环模型服务器一次只能处理一个请求
gevent.spawn(handler,c,addr) # 协程高并发处理请求
def handler(c,addr):
#处理客户端请求
while True:
data = c.recv(1024)
if not data:
print('连接断开:{}'.format(addr))
break
print(data.decode())
c.send(ctime().encode())
c.close()
if __name__ == '__main__':
port = 8888
s = server(port)