Где мне следует выделить пул в многопроцессорной обработке Python?Python

Программы на Python
Ответить
Anonymous
 Где мне следует выделить пул в многопроцессорной обработке Python?

Сообщение Anonymous »

Я хочу распространить приложение Python на несколько ядер, и из документации я понимаю, что для этого можно использовать пул.
Мою проблему можно воспроизвести с помощью следующего кода:

Код: Выделить всё

#!/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'
Инспектор объектов сообщает мне, что моя переменная пула является экземпляром объекта PoolProxy, поэтому ее можно вызвать из процесса.
Где я ошибаюсь?
Есть ли лучший способ добиться того, что я пытаюсь сделать?


Подробнее здесь: https://stackoverflow.com/questions/797 ... processing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»