簡體   English   中英

Python多重處理無法使其更快

[英]Python Multiprocessing not making it faster

您好,我有一個程序從stdin接受輸入,我認為如果我使用多處理會更快,但實際上需要更長的時間:

正常:

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

不幸的是,當我檢查經過的時間時,多進程處理幾乎是三倍的。

我有一個處理器,兩個物理核心以及每個物理核心2個虛擬核心。

我怎么知道這是由多處理開銷引起的? 還是我做錯了什么?

任何幫助將非常感激

池將輸入划分為多個進程。 在您的情況4中。但是您一次傳遞一個輸入,實際上並沒有觸發所有4個線程。 使用以下內容,查看時間變化

 pool.imap(worker, sys.stdin.readlines())

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM