網絡IO誰更快?Python與Go請求速度對比

上一篇關於Python和Go的文章是:python

什麼?Python Celery 也能調度Go worker?redis

文中咱們討論了Python Celery調度Go寫的worker的方法。緩存

而在 優劣互補! Python+Go結合開發的探討微信

一文中,咱們討論了Go在單線程計算性能上的優點。網絡

如今,考慮這樣的一種場景:併發

咱們須要從某些網址中同步數據並進行計算,保存到本地redis緩存中。app

如今,咱們能夠經過編寫Go Worker的方式,將計算和保存的過程保存在本地的redis緩存中,而後使用Celery來調度這些任務。性能

問題在於,從這些網址中獲取數據的步驟,寫在Go Worker裏是否合適?Go進行網絡請求是否比Python更穩定、速度更快?今天咱們就來簡單地比較一下。測試

1.同步比較

首先,試試Go語言請求百度,得到這個請求和拿到迴應之間的時間差:網站


結果以下:

能夠看到,平均耗時在250ms左右。

而後測試Python的requests模塊請求網站:


結果以下:



平均約220ms,彷佛在單個請求的狀況下,Python略勝一籌。

可是單個請求的比較是沒有意義的,由於這個差別能夠忽略不計。

重點仍是在下面併發請求的比較上。

2.併發比較

如今,咱們試試用Go語言併發請求10次百度:


效果以下:



平均消耗在300ms左右,和單次請求差很少,速度仍是至關快的。

接下來試試Python的併發請求,值得注意的是,這裏沒有用requests模板,由於requests模塊是同步的,這一點必定要注意。

所以在這裏須要使用aiohttp進行併發請求:


測試結果以下:



能夠看到,平均耗時在500ms左右,在併發的時候,其速度相比於Go略遜一籌。

3.總結

能夠看到,Python在單個請求的時候(使用requests模塊)速度比Go稍微快一丟丟,可是這樣的區別幾乎能夠忽略不計。

在併發10次請求的狀況下,Go平均耗時300ms,而Python平均耗時500ms,Go略勝一籌。

咱們的文章到此就結束啦,若是你喜歡今天的Python 實戰教程,請持續關注Python實用寶典。

有任何問題,能夠在公衆號後臺回覆:加羣,回答紅字的驗證信息,進入互助羣詢問。

原創不易,但願你能在下面點個贊和在看支持我繼續創做,謝謝!

點擊下方閱讀原文可得到更好的閱讀體驗

Python實用寶典 (pythondict.com)
不僅是一個寶典
歡迎關注公衆號:Python實用寶典

本文分享自微信公衆號 - Python實用寶典(pythondict)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索