1
您好,我有一個程序,它需要從標準,我認爲這將是更快,如果我使用多它的輸入,但它實際上需要更長的時間:Python的多重不使其更快
正常:
import sys
import hashlib
import base58
from progress.bar import ShadyBar
bar=ShadyBar('Fighting', max=100000, suffix='%(percent)d%% - %(index)d/%(max)d - %(elapsed)d')
listagood=[]
for cc in sys.stdin:
try:
bar.next()
hexwif=cc[0:51]
enco=base58.b58decode_check(hexwif)
Fhash=hashlib.sha256(enco)
d2=hashlib.sha256()
d2.update(Fhash.digest())
Shash=d2.hexdigest()
Conf1=Shash[0:8]
encooo=base58.b58decode(hexwif)
Conf2=encooo.encode("hex")
Conf2=Conf2[len(Conf2)-8:len(Conf2)]
if Conf1==Conf2:
listagood.append(cc)
except:
pass
bar.finish()
print("\nChecksum: ")
print(listagood)
print("\n")
多處理:
def worker(line):
try:
hexwif=line[0:51]
enco=base58.b58decode_check(hexwif)
Fhash=hashlib.sha256(enco)
d2=hashlib.sha256()
d2.update(Fhash.digest())
Shash=d2.hexdigest()
Conf1=Shash[0:8]
encooo=base58.b58decode(hexwif)
Conf2=encooo.encode("hex")
Conf2=Conf2[len(Conf2)-8:len(Conf2)]
if Conf1==Conf2:
return(line)
except:
#e=sys.exc_info()
#print(str(e))
pass
listagood=[]
pool = multiprocessing.Pool(processes=4)
bar=ShadyBar('Fighting', max=100000, suffix='%(percent)d%% - %(index)d/%(max)d - %(elapsed)d')
for result in pool.imap(worker, sys.stdin):
if result != None:
listagood.append(result)
#print "Result: %r" % (result)
bar.next()
bar.finish()
print("\nChecksum: ")
print(listagood)
print("\n")
不幸的是,當我檢查經過的時間,它幾乎是三重多進程之一。
對於每個物理內核,我有一個處理器,兩個物理內核和兩個虛擬內核。
我怎麼知道這是否是由多處理開銷造成的?或者是我做錯了什麼?
任何幫助將不勝感激
我會試試看,即時通訊仍然理解這個多處理的工作原理,感謝評論,我會盡快回復結果 –