一. 应用场景
深度学习中通常要处理数据,数据量很大时,用多进程处理会节约不少时间。
二. 应用案例
这里举一个例子,函数会把一张图片读20次(IO的代表),并且计算前200000个自然数的和(计算的代表)。分别用多进程和不用多进程,对比消耗的时间。
import cv2
import time
import multiprocessing
def work(img_path):
for i in range(20):
cv2.imread(img_path)
sum_num = 0
for i in range(200000):
sum_num += 1
return sum_num
if __name__ == "__main__":
img_path = "test.jpg"
# 测试单进程
start = time.time()
for i in range(30):
work(img_path)
end = time.time()
print("不用多进程时use time", end-start)
# 测试多进程
start = time.time()
with multiprocessing.Pool(processes=16) as pool:
for _ in pool.imap_unordered(work, [img_path]*30):
pass
end = time.time()
print("用多进程时use time", end-start)