文章詳情頁
python 爬蟲 解析效率如何提升?
瀏覽:232日期:2022-06-29 17:26:48
問題描述
現在采用的是在windows 環境下 采用多線程的方式進行爬取,使用beautifulsoup+lxml進行解析.
N個爬取線程->解析隊列->1個解析線程->存儲隊列->1個存儲線程
整個執行程序的效率卡在計算密集的解析線程中,如果只是增加解析線程數量的話,反而增加線程切換開銷速度變慢。
請問下 有什么辦法可以較為明顯的提升解析效率?
根據兩位大腿的說明 準備采用異步爬取->解析隊列->N個解析進程->存儲隊列->存儲線程
準備開工
問題解答
回答1:其實我覺得, 你在前面N個爬取線程 可以換成協程/線程池實現, 因為你在頻繁創建線程本省一種性能耗費, 用線程池雖然可以減少這部分的損耗, 但是上下文切換還是無法避免, 所以協程這方面, 應該是比較合適的.1個解析線程 換成 進程池,多開幾個進程去計算密集處理, 其余應該可以不用改, 如果還想再搞, 將核心部分用c/c++ 重寫咯, 希望可以幫到你
回答2:我的做法是多進程。多進程的好處是當單機性能不夠的時候,可以隨時切換為分布式爬蟲。
回答3:可以網上找下tornade異步爬蟲吧,我正在用這個
相關文章:
1. javascript - immutable配合react提升性能?2. javascript - sublime快鍵鍵問題3. phpstudy8.1支持win11系統嗎?4. 配置Apache時,添加對PHP的支持時語法錯誤5. vue.js - Vue 如何像Angular.js watch 一樣監聽數據變化6. css - 寫頁面遇到個布局問題,求大佬們幫解答,在線等,急!~7. 實現bing搜索工具urlAPI提交8. javascript - nodejs關于進程間發送句柄的一點疑問9. Apache 已經把網站根目錄的改為allow from all了,但是服務器還是不能訪問?10. javascript - 移動端上不能實現拖拽布局嗎?
排行榜

網公網安備