Я не понимаю, почему счетчик идентификаторов класса, использующего 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