日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

一招大幅提升 requests 訪問速度

 

作者:kingname

我做了一個垃圾信息過濾的 HTTP 接口。現在有一千萬條消息需要經過這個接口進行垃圾檢測。


一開始我的代碼是這樣的:

import requests
messages = ['第一條', '第二條', '第三條']
for message in messages:
    resp = requests.post(url, json={'msg': message}).json()
    if resp['trash']:
        print('是垃圾消息')

我們寫一段代碼來看看運行速度:

一招大幅提升 requests 訪問速度

 

訪問一百次百度,竟然需要 20 秒。那我有一千萬條信息,這個時間太長了。有沒有什么加速的辦法呢?除了我們之前文章講到的 多線程、aiohttp 或者干脆用 Scrapy 外,還可以讓 requests 保持連接從而減少頻繁進行 TCP 三次握手的時間消耗。那么要如何讓 requests 保持連接呢?實際上非常簡單,使用Session對象即可。修改后的代碼:

import requests
import time
start = time.time()
session = requests.Session()
for _ in range(100):
    resp = session.get('https://baidu.com').content.decode()
    
end = time.time()
print(f'訪問一百次網頁,耗時:{end - start}')

運行效果如下圖所示:

一招大幅提升 requests 訪問速度

 

性能得到了顯著提升。訪問 100 頁只需要 5 秒鐘。在官方文檔[1]中,requests 也說到了 Session對象能夠保持連接:

?The Session object allows you to persist certain parameters across requests. It also persists cookies across all requests made from the Session instance, and will use urllib3’s connection pooling. So if you’re making several requests to the same host, the underlying TCP connection will be reused, which can result in a significant performance increase (see HTTP persistent connection).”

?Excellent news — thanks to urllib3, keep-alive is 100% automatic within a session! Any requests that you make within a session will automatically reuse the Appropriate connection!”

分享到:
標簽:requests
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定