av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

網頁爬蟲 - python的多進程怎么配合requests

瀏覽:123日期:2022-06-27 18:08:43

問題描述

這是單進程順序執行的代碼:

import requests,time,os,randomdef img_down(url): with open('{}'.format(str(random.random())+os.path.basename(url)),'wb') as fob:fob.write(requests.get(url).content)urllist=[]with open('urllist.txt','r+') as u: for a in u.readlines():urllist.append(a.strip())s=time.clock()for i in range(len(urllist)): img_down(urllist[i])e=time.clock()print ('time: %d' % (e-s))

這是多進程的代碼:

from multiprocessing import Poolimport requests,os,time,randomdef img_down(url): with open('{}'.format(str(random.random())+os.path.basename(url)),'wb') as fob:fob.write(requests.get(url).content)if __name__=='__main__': urllist=[] with open('urllist.txt','r+') as urlfob:for s in urlfob.readlines(): urllist.append(s.strip()) s=time.clock() p=Pool() for i in range(len(urllist)):p.apply_async(img_down,args=(urllist[i],)) p.close() p.join() e=time.clock()print ('time: {}'.format(e-s))

但是單進程和多進程花費的時間幾乎沒區別,問題大概是requests阻塞IO,請問理解的對不對,代碼該怎么修改達到多進程的目的?謝謝!

問題解答

回答1:

寫文件的瓶頸在磁盤IO,并不在CPU,你并行并沒有多大作用,你可以試試不要寫入文件再對比時間

回答2:

Pool 不帶參數的話 是采用 os.cpu_count() or 1如果是單核CPU,或者采集不到數量 就只有1個進程而已。

應該是這個原因。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 久久综合久久综合久久综合 | 在线中文字幕亚洲 | 国产永久免费 | 日韩中文字幕网 | 亚洲视频在线一区 | 美女黄频 | 一区二区精品电影 | 日韩欧美在 | 久草热线| 日韩一区精品 | 免费观看av | 自拍视频国产 | 免费一区二区三区 | 日韩成人免费在线视频 | 高清亚洲| 成人免费在线观看视频 | 久久免费视频1 | 天天操夜夜操 | 色婷婷影院 | 成人免费小视频 | 国产精品久久久99 | 精品国产乱码久久久久久图片 | 久操国产 | 综合天天久久 | 久久精品99| 精品视频在线免费观看 | 中文在线一区二区 | 亚洲 欧美 日韩 精品 | 日本精品一区二区三区视频 | 人人爽日日躁夜夜躁尤物 | 三级av免费| 波多野结衣中文字幕一区二区三区 | 日韩三区 | 国产精品一区一区三区 | 色综合天天天天做夜夜夜夜做 | 99在线观看视频 | 国产欧美一区二区久久性色99 | 毛片一级网站 | 国产色网 | 一区二区高清在线观看 | 亚洲精品日韩一区二区电影 |