itertools count () сбрасывается с многопроцессорным пулом - PullRequest
0 голосов
/ 08 июля 2020

Я не понимаю, почему счетчик идентификаторов класса, использующего itertools count(), сбрасывается после использования multiprocessing Pool. Что мне следует изменить в приведенном ниже коде, чтобы id объекта = 1 / worker id = 0 печатался после того, как первый Pool worker завершен?

from itertools import count
from multiprocessing import Pool

class Obj(object):
    _ids = count()

    def __init__(self):
        self.id = next(Obj._ids)

def print_ids(worker):
    obj = Obj()
    print(f"object id = {obj.id} / worker id = {worker}")

if __name__ == "__main__":

    worker = "None"
    print_ids(worker)

    with Pool(processes=5) as pool:
        pool.map(print_ids, range(5))

output:

object id = 0 / worker id = None
object id = 0 / worker id = 0        <<< obj.id resets here
object id = 1 / worker id = 1
object id = 2 / worker id = 2
object id = 3 / worker id = 3
object id = 4 / worker id = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...