Увеличение переменной на основе количества процессов / ядер - PullRequest
0 голосов
/ 12 октября 2018

Я бы хотел повысить эффективность этой функции, разделив приращение на количество присутствующих ядер / процессов.

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

Я реализовал решение, основанное на этом ответе .У меня не было ошибок, но я заметил, что когда я увеличил количество ядер / процессов, «мои» мои блоки заняли больше времени.По сути, я хочу, чтобы каждый процесс увеличивал одноразовый номер на соответствующий порядковый номер.Например: если бы у нас было 4 процесса, первый процесс увеличил бы одноразовый номер на 1, 2-й процесс на 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()
...