我有多个Tensorflow会话,我希望能够并行地对所有会话进行推理。我试图使用Python多线程来实现这一点,但下面的代码仍然以相同的持续时间结束,就好像所有代码都是按顺序运行的一样
如果我理解正确,session.run()将释放Python GIL,以便下一个线程也可以执行session.run()。如果是这样,我不确定为什么下面的代码不能并行运行
有人知道我如何使下面的代码并行运行吗?我从:How to use multi-threading in inference when there are more than 1 GPUs?得到了lambda的想法
def perform_inference_threaded_parent(input_list):
thread_list = []
workers = [lambda input_list, y_op, x_inp, tflag_op, sess: sess.run(y_op, {x_inp: input_list, tflag_op: False}) for sess in cr_sessions]
for model_idx in range(len(model_names)):
sess = cr_sessions[model_idx]
t = threading.Thread(target=workers[model_idx], args=(input_list,
y_op,
x_inp,
tflag_op,
sess))
thread_list.append(t)
t.start()
for t in thread_list:
t.join()
目前没有回答
相关问题 更多 >
编程相关推荐