久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

網(wǎng)頁爬蟲 - python的多進(jìn)程怎么配合requests

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

問題描述

這是單進(jìn)程順序執(zhí)行的代碼:

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))

這是多進(jìn)程的代碼:

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))

但是單進(jìn)程和多進(jìn)程花費(fèi)的時(shí)間幾乎沒區(qū)別,問題大概是requests阻塞IO,請問理解的對不對,代碼該怎么修改達(dá)到多進(jìn)程的目的?謝謝!

問題解答

回答1:

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

回答2:

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

應(yīng)該是這個(gè)原因。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 合江县| 桑植县| 巴青县| 交口县| 彰化市| 正镶白旗| 宜黄县| 水富县| 潜江市| 锡林郭勒盟| 余姚市| 凤翔县| 阿鲁科尔沁旗| 故城县| 巢湖市| 绥阳县| 鄢陵县| 新疆| 凯里市| 彩票| 牡丹江市| 镇平县| 德江县| 从江县| 德保县| 贵港市| 灵山县| 漯河市| 北票市| 马边| 嵩明县| 高安市| 右玉县| 华阴市| 营山县| 崇阳县| 和龙市| 商洛市| 樟树市| 花垣县| 德化县|