深度学习中,如果做用两个以上模型推理的时候,若采用模型1+模型2的串联方式,则模型的总耗时会约等于两个模型耗时的累加,如果采用多线程处理,模型的推理耗时约等于max(model1_time_cost,model2_time_cost)
下面是用多进程而不是多线程的方式模拟多线程读取视频,并用两个模型做结果融合,
结构图
实现代码如下,不做过多注释,直接运行即可,运行逻辑如上图所示,各个进程共享val_queue,如果导入的是import Queue,则数据无法在进程间进行共享
要采用 multiprocess里的Queue(更方便),但实现代码里用的是Manager.list()
import threading
from multiprocessing import Event, Process,Manager,Queue
import time
temp_val = 0
model1_over = Event()
model2_over = Event()
result_process_over = Event()
m1 = Event()
m2 = Event()
def add_val(val_queue):
'''init'''
val_num = 0
val_queue.append([val_num])
val_num += 1
model1_over.set()
model2_over.set()
while T