多线程和协程都属于IO密集型,我通过以下用例测试多线程和协程的实际速率对比。

实例:通过socket客户端以多线程并发模式请求不同服务器端(这里服务器端分2种写法:第一种服务器通过协程实现,第二种服务器通过多线程实现)的访问速率

第一种服务器端写法:通过gevent实现

 1 import socket
 2 import gevent
 3 from gevent import socket, monkey
 4 monkey.patch_all()
 5 
 6 def server(port):  # socket服务器函数
 7     s = socket.socket()
 8     s.bind(('localhost', port))
 9     s.listen()
10     print('start server listen:')
11     while True:
12         conn, addr = s.accept()
13         gevent.spawn(handle_request, conn)  # 协程模式实现交互
14 
15 def handle_request(conn):
16     try:
17         while True:
18             data = conn.recv(1024)
19             print('recv:',data)
20             conn.send(data)
21             if not data:
22                 conn.shutdown(socket.SHUT_WR)
23     except Exception as e:
24         print(e)
25     finally:
26         conn.close()
27 if __name__ == '__main__':
28     server(9999)
gevent协程服务器模式

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2021-12-06
  • 2021-06-14
猜你喜欢
  • 2022-12-23
  • 2021-08-06
  • 2021-08-20
  • 2022-02-02
  • 2022-12-23
  • 2022-01-17
相关资源
相似解决方案