Я хочу использовать многопроцессорный процесс для складывания многих изображений. Каждый стек состоит из 5 изображений, что означает, у меня есть список изображений с подсписка изображений, которые должны быть объединены:Python многопроцессорные списки изображений
img_lst = [[01_A, 01_B, 01_C, 01_D, 01_E], [02_A, 02_B, 02_C, 02_D, 02_E], [03_A, 03_B, 03_C, 03_D, 03_E]]
в них момент я называю свою функцию do_stacking (sub_lst) с петлей:
for sub_lst in img_lst:
# example: do_stacking([01_A, 01_B, 01_C, 01_D, 01_E])
do_stacking(sub_lst)
I хочу ускорить многопроцессорность, но я не уверен, как вызвать функцию pool.map:
if __name__ == '__main__':
from multiprocessing import Pool
# I store my lists in a file
f_in = open(stacking_path + "stacks.txt", 'r')
f_stack = f_in.readlines()
for data in f_stack:
data = data.strip()
data = data.split('\t')
# data is now my sub_lst
# Not sure what to do here, set the sublist, f_stack?
pool = Pool()
pool.map(do_stacking, ???)
pool.close()
pool.join()
Edit:
У меня есть список из списка:
[
[01_A, 01_B, 01_C, 01_D, 01_E],
[02_A, 02_B , 02_C, 02_D, 02_E],
[03_A, 03_B, 03_C, 03_D, 03_E]
]
Каждый подсписок должен быть передан в функцию под названием do_stacking (подсписок). Я только хочу перейти к подсписку, а не ко всему списку.
Вопрос: как обрабатывать цикл списка (для x в img_lst)? Должен ли я создать цикл для каждого пула?
Но тогда do_stacking будет действовать только один из sub_lst (последний в img_list). – snowflake
@snowflake Я думаю, что, возможно, что-то не так в 'img_list', которое построено в цикле for (проверьте его в своей среде, потому что я не знаю содержимое stacks.txt). Я просто запустил код. – tianwei
Я думаю, что не очень хорошо объяснил, что хочу, я редактировал свой пост выше. Если я реализую ваше решение, do_stacking будет заботиться только о последнем подменю img_lst. – snowflake