Rumah > Soal Jawab > teks badan
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!
phpcn_u15822017-06-22 11:54:30
Kemacetan menulis fail adalah cakera IO, bukan Paralelisme tidak mempunyai banyak kesan Anda boleh cuba untuk tidak menulis fail dan membandingkan masa
怪我咯2017-06-22 11:54:30
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.