多重处理(使用current.futures)附加列表 [英] multiprocessing (using concurrent.futures) appending list
本文介绍了多重处理(使用current.futures)附加列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试将值附加到列表中.但是,由于它是多处理的,所以列表最终仅以一个值结束.有没有一种方法可以将所有图像的大小而不只是一个添加到列表中?
I am trying to append values to a list. But, as it's multiprocessing, the list is ending up with just one value finally. Is there a way where I can append sizes of all the images to the list rather than just one?
import cv2
import concurrent.futures
import os
length = []
def multi_proc(image):
name = image[0:-4]
im = cv2.imread(image)
final_im = cv2.resize(im, (100,100))
cv2.imwrite(name+"rs"+".png", final_im)
l = im.shape
print(l)
length.append(l)
with concurrent.futures.ProcessPoolExecutor() as executor:
sound_files = [f for f in os.listdir('.') if f.endswith('.png')]
executor.map(multi_proc, sound_files)
推荐答案
import cv2
import concurrent.futures
import os
length = []
def multi_proc(image):
name = image[0:-4]
im = cv2.imread(image)
final_im = cv2.resize(im, (100,100))
cv2.imwrite(name+"rs"+".png", final_im)
l = im.shape
print(l)
return l
def app_img(l):
length.append(l)
def start_processing():
with concurrent.futures.ProcessPoolExecutor() as executor:
sound_files = [f for f in os.listdir('.') if f.endswith('.png')]
breakpoint()
future_proc = {executor.submit(multi_proc, f): f for f in sound_files}
for future in concurrent.futures.as_completed(future_proc):
app_img(future.result())
if __name__ == "__main__":
start_processing()
print(len(length))
输入:2个png文件输出:
input: 2 png files output:
(225, 225, 3)
(313, 161, 3)
2
这篇关于多重处理(使用current.futures)附加列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文