基于进程/核心数的增量变量

时间:2018-10-12 02:14:11

标签: python multithreading multiprocessing increment

我想通过根据存在的核心/进程划分增量来提高此函数的效率。

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

0 个答案:

没有答案