我想通过根据存在的核心/进程划分增量来提高此函数的效率。
def mine_block(self, core_number):
"""Mine block once node has a certain number of transactions."""
difficulty_zeroes = self.difficulty * "0" # Number of zeroes needed
# Mine block until an appropriate nonce has been found
while (self.hash[0:self.difficulty] != difficulty_zeroes):
self.nonce += core_number
self.hash = self.compute_block_hash()
print ("Block mined.")
我已经基于此answer实施了一个宽松的解决方案。我没有任何错误,但是我注意到随着内核/进程数量的增加,“挖掘”我各自的模块花费了更长的时间。本质上,我想做的是让每个进程按其各自的订购号增加随机数。例如:如果我们有4个进程,则第一个进程将使随机数增加1,第二个进程将增加2,第3个进程增加3,依此类推,直到满足条件。我假设多处理将自动执行此操作,但事实并非如此。
我当前的多处理实现如下:
def mine_blocks(self):
"""Use multiprocessing to enhance block mining."""
nonce_processes = []
core_range = range(1, self.numcores + 1)
for core in core_range:
p = mp.Process(target=self.mine_block, args=(core,))
p.start()
nonce_processes.append(p)
for process in nonce_processes: # Terminate processes
process.terminate()