Предположим, у меня есть массив объектов, которые я хочу распределить среди n рабочих процессов, чтобы выполнить работу по отображению. Каков наилучший способ сделать это? Прямо сейчас я заполняю очередь рабочими объектами, а затем заставляю каждый из рабочих процессов извлекать один из рабочих объектов из указанной очереди, однако я чувствую, что должен быть более краткий способ сделать это (возможно, найти способ передачиуникальные аргументы для каждого инициализатора). То, что я сейчас делаю, кажется достаточно распространенным, чтобы выполнить использование пула и его различных аргументов без сопровождающего кода или (как я считаю,) злоупотребления общей очередью.
EG
import multiprocessing as mp
objects = [ obj1, obj2, obj3 ]
object_pool = mp.Queue()
for o in objects: object_pool.put(o)
worker_object = None
def init():
worker_object = Worker(object_pool.get())
def worker(thing):
return worker_object.transform(thing)
pool = mp.Pool(len(objects), initializer=init)
pool.map(worker, [item 1, item 2,...])