測試下多執行緒和 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【Edge瀏覽器】開啟多多收藏!
移動流量偶爾打不開,可以切換電信、聯通、Wifi。
收藏網址:www.peakbooks.cc
(>人<;)