gpt4 book ai didi

python - 使用多重处理来预处理图像

转载 作者:行者123 更新时间:2023-12-01 08:43:29 27 4
gpt4 key购买 nike

我正在尝试使用 python 中的多重处理来实践。因此,我尝试使用多重处理来操作图像预处理管道。我将所有图像都放在名为 image_files 的目录中,并且有该目录中所有文件名的列表。我将列表分为两个 block ab 并将每个 block 传递给它自己的 multiprocessing.Process,其中有一个名为 preprocess_image 的方法code> 正在对每个图像进行预处理。

按照有关如何使用多重处理计算平方根的教程,我想出了一个工作代码(见下文)。

这段代码可以工作,但是速度很重要,我不确定定义两个基本相同的方法是否合适,或者仅使用单个方法并简单地传递 a 是否会更快> 和 bmultiprocessing.Process(target=work... 中的同一目标。

因此我的问题是这是否是使用多处理的正确方法,或者我是否可以以某种方式加快速度?

def work1(array):
for i in tqdm(array):
image_path = "C:/Users/aaron/Desktop/image_files/"+i

image = preprocess_image(image_path)
cv2.imwrite("C:/Users/aaron/Desktop/destination/"+i, image)

def work2(array):
for i in tqdm(array):
image_path = "C:/Users/aaron/Desktop/image_files/"+i

image = preprocess_image(image_path)
cv2.imwrite("C:/Users/aaron/Desktop/destination/"+i, image)


if __name__ == "__main__":
p1 = multiprocessing.Process(target=work1, args=(a,))
p2 = multiprocessing.Process(target=work2, args=(b,))

p1.start()
p2.start()

p1.join()
p2.join()

print("Done!")

最佳答案

由于所有进程输出似乎都是独立的,因此您应该使用 MultiProcessing.Pool:

from multiprocessing import Pool

l = # list of all your image files

f = # function to modify each of these, taking element of l as input.

p = Pool(10) # however many process you want to spawn

p.map(f, l)

就是这样,您不需要两次定义相同的函数或手动拆分列表。它将自动为您分配和管理。

关于python - 使用多重处理来预处理图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53399779/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com