测试下多线程和 gevent 在 socket 服务端的小包表现能力,测试的方法不太严谨,有点属于自娱自乐,要是有问题之处,请大家喷之!
每个连接都特意堵塞了 0.5 秒钟!
图片 21.1 pic
在大批量 tcp 测试下,threading 的开销越来越大,所以造成了在并发数加大的情况下,出现 threading 崩溃的情况!gevent 是 libevent 和协程的融合,一个线程里面都可以跑超多的协程! 利用 libevent 做 io 堵塞的调度,gevent 体系下,同一时间只有一个任务在运行!
先来测试下多线程: 我们就不加线程池了
#!/usr/bin/env python # -*- coding: utf-8 -*- #xiaorui.ccimport sysimport socketimport timeimport threading #xiaorui.ccdef threads(port): s = socket.socket s.bind((\'0.0.0.0\', port)) s.listen(500) while True:cli, addr = s.acceptt = threading.Thread(target=handle_request, args=(cli, time.sleep))t.daemon = Truet.startdef handle_request(s, sleep): try:s.recv(1024)sleep(0.5) s.send(\'\'\'http/1.0 200 OK Hello World! \'\'\')s.shutdown(socket.SHUT_WR)print \'.\', except Exception, ex:print ex finally:sys.stdout.flushs.closeif __name__ == \'__main__\': threads(4444)
Loading...
未加载完,尝试【刷新】or【退出阅读模式】or【关闭广告屏蔽】。
尝试更换【Firefox浏览器】or【Chrome谷歌浏览器】打开多多收藏!
移动流量偶尔打不开,可以切换电信、联通、Wifi。
收藏网址:www.ziyungong.cc
(>人<;)