@Lepilov

Как применить модуль multiprocessing для распараллеливания обработки изображений?

Есть папка с n картинок и сервак двухпроцессорный, пытаюсь распаралелить выполнение функции по обработке изображений на 2 процесса. Использую модуль multiprocessing. Что делаю: создаю список изображений , объявляю процесс через Pool(), объявляю цикл зависящий от длины списка изображений. Код сейчас так выглядит:

img_list = [] #Список изображений
            jobs_list = []#Список процессов
            for _,_,file_names in os.walk(f_img):#
                for i in file_names:
                    img_list.append(os.path.join(f_img, i))
                print("CUrrent img list: ", img_list)#Заполнил список изображениями из папки
            curent_img_list = deque(img_list)#Для дальнейшего использования ф-ии popleft()
            proc = Pool()
            while len(curent_img_list): #Пока не закончатся картинки
                print("--------->>>> First While")
                for i in range(2):#"Это я так ограничиваю кол-во процессов
                    job = proc.map(run, curent_img_list[0])#Запускаю процесс передав изображение в run
                    curent_img_list.popleft()#Удаляю img из списка
                    jobs_list.append(job)#Добавляю процесс в список запущенных процессов
                    print("______>>>>>Iteration: ", i)


                while len(jobs_list):#Пока есть запущенные процессы отслеживаем их статус
                    print("--------->>>> Second While")
                    for j in jobs_list:
                        j.join(timeout=0)
                        if j.is_alive():
                             pass
                        else:
                            j.close()
                            del(jobs_list[])# Тут надо удалить процесс из списка но до этого пока не доходит стек

В процессе выполнения появляется ошибка
job.join()
AttributeError: 'list' object has no attribute 'join'

Распринтил jobs_list, а там список из None.
Нужна помощь, я что то в затыке(
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы