Ini ialah kod untuk pelaksanaan berurutan satu proses:
import requests,time,os,random
def 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))
Ini ialah kod untuk pelbagai proses:
from multiprocessing import Pool
import requests,os,time,random
def 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))
Tetapi hampir tiada perbezaan antara masa yang dihabiskan dalam satu proses dan berbilang proses Masalahnya mungkin permintaan menyekat IO Adakah pemahaman anda betul?
Terima kasih!
Kemacetan menulis fail adalah cakera IO, bukan Paralelisme tidak mempunyai banyak kesan Anda boleh cuba untuk tidak menulis fail dan membandingkan masa
Kolam tanpa parameter menggunakan
os.cpu_count() atau 1
Jika ia adalah CPU teras tunggal, atau nombor tidak dapat dikumpulkan, hanya ada satu proses.
Sepatutnya itulah sebabnya.