第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python如何提高爬蟲效率

python如何提高爬蟲效率

慕慕森 2018-07-06 20:15:48
任務(wù)背景是需要從一個linux服務(wù)器上下載文件,我擁有該服務(wù)器的訪問權(quán)限但僅限于讀。目前的解決方法是我把所有需要下載的數(shù)據(jù)地址都保存在了本地的文件中,一行一條數(shù)據(jù)地址,通過paramiko包連接服務(wù)器然后使用多線程的方式進(jìn)行爬取。每個線程啟動時向其傳入一個下載地址列表,因為每個線程的下載地址列表都不重復(fù),因此不需要考慮線程之間的通信。詳細(xì)代碼如下:# filename是存儲在本地的地址列表文件,n是最大線程數(shù) def download(filename, n):     files = open(filename, 'rb').readlines()     numbers = range(n)     stop = len(files) / len(numbers)     def thread_download(n):         sftp = login()         directory = files[n*stop : (n+1)*stop]         for line in directory:             # 該函數(shù)的功能是將服務(wù)器中的文件下載至本地,第一個參數(shù)是具體地址,第二個參數(shù)是連接句柄             download_from_server(line.strip(), sftp)      threads = []     for i in numbers:         threads.append(threading.Thread(target=thread_download, args=(i, )))         threads[i].start()         time.sleep(0.1)  # 暫停0.1s是為了防止并發(fā)數(shù)太多     for i in numbers:         threads[i].join()現(xiàn)在有兩個問題:(1)我一般把n設(shè)置為300,程序啟動時下載速度很快,能夠達(dá)到每分鐘100多份文件,雖然也能看到一些線程崩潰,但數(shù)量不多;但是大概10分鐘后程序下載速度只有20多份文件,是因為很多線程已經(jīng)掛掉了嘛,還是線程之間通過同一個賬戶訪問存在阻塞?為什么速度下降幅度這么大?(2)除了使用多臺機(jī)器和提高網(wǎng)速外,還能考慮什么方式提高爬蟲效率?
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗 獲得超6個贊

首先要搞清楚瓶頸在哪里。一個是監(jiān)控你的cpu、內(nèi)存、io,看看有沒有出現(xiàn)滿載。一個是測試你的服務(wù)器的連接速度,確認(rèn)它的上限,以及在持續(xù)傳輸?shù)倪^程中是否會限速(有的機(jī)房會限速)

查看完整回答
反對 回復(fù) 2018-07-14
?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗 獲得超9個贊

一個進(jìn)程開300個線程 太多了吧 建議少一點 16 or 32 測試一下 然后提高效率,基于目前的模式,你可以開多個進(jìn)程 每個進(jìn)程多個線程,可能會更快。


查看完整回答
反對 回復(fù) 2018-07-14
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

提高爬蟲的方法有很多,建議看看python的相關(guān)庫函數(shù)

查看完整回答
反對 回復(fù) 2018-07-14
  • 3 回答
  • 0 關(guān)注
  • 725 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號