交替进行多处理和单处理时,Python程序卡住了

问题描述

我开始使用Python进行多处理,并且试图比较单处理和多处理之间任务执行时间的差异。

程序仅加载一堆图像,对它们执行一些操作并保存。
我正在做相同的事情,第一次是正常的,第二次是使用多处理的:

import cv2
import time
import os
import concurrent.futures


def main():

    path = "orig_images/"
    img_paths_list = [f"{path}{img_name}" for img_name in os.listdir(path)]

    ## single processing
    print("Single processing")
    time_start = time.time()
    for img_path in img_paths_list:
        result = process_image(img_path)
        print(result)
    time_end = time.time()
    print(f"Finished in {round(time_end - time_start,2)} s")


    ## multiprocessing
    print("Multiprocessing")
    time_start = time.time()
    results = []
    with concurrent.futures.ProcessPoolExecutor() as executor:
        results = [executor.submit(process_image,img_path) for img_path in img_paths_list]

    for f in concurrent.futures.as_completed(results):
        print(f.result())
    time_end = time.time()
    print(f"Finished in {round(time_end - time_start,2)} s")


def process_image(img_path):
    img = cv2.imread(img_path)
    img = cv2.GaussianBlur(img,(5,5),0)
    img = cv2.resize(img,dsize=(1200,1200))
    img_name = os.path.split(img_path)[1]
    cv2.imwrite(f"mod_images/{img_name}",img)
    result = f"Image {img_name} was processed"
    return(result)



if __name__ == "__main__":
    main()


现在,我遇到了一个奇怪的问题……任务是第一次完成(单次处理),但随后卡在了多处理部分的开始处,即

print("Multiprocessing")

声明。如果我切换了这两个部分,即我通过多处理运行任务,然后正常进行,则结束时没有任何问题。

我不明白我在做什么。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...