Мою проблему можно воспроизвести с помощью следующего кода:
Код: Выделить всё
#!/usr/bin/python3
import multiprocessing as mp
import multiprocessing.managers
import time
def poolswimmer():
for i in range(5):
print(i)
time.sleep(1)
def poolprocess(_pool):
res = _pool.apply_async(poolswimmer)
res.wait()
if __name__ == "__main__":
mp.freeze_support()
mpc = mp.get_context('spawn')
manager = mpc.Manager()
pool = manager.Pool()
p = mp.Process(target=poolprocess, args=(pool,))
p.start()
p.join()
pool.close()
Я получаю следующую ошибку:
Код: Выделить всё
Process Process-2:
Traceback (most recent call last):
File "/usr/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/usr/lib/python3.12/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/dad/sandbox/ImageProcessing/poolrider.py", line 12, in poolprocess
res = _pool.apply_async(poolswimmer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 2, in apply_async
File "/usr/lib/python3.12/multiprocessing/managers.py", line 827, in _callmethod
proxytype = self._manager._registry[token.typeid][-1]
^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '_registry'
Где я ошибаюсь?
Есть ли лучший способ добиться того, что я пытаюсь сделать?
Подробнее здесь: https://stackoverflow.com/questions/797 ... processing
Мобильная версия