上一篇關於Python和Go的文章是:python
什麼?Python Celery 也能調度Go worker?redis
文中咱們討論了Python Celery調度Go寫的worker的方法。緩存
一文中,咱們討論了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實用寶典
![](http://static.javashuo.com/static/loading.gif)
本文分享自微信公衆號 - Python實用寶典(pythondict)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。