p中运行多段推理的张量流

2024-04-19 05:29:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个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()

Tags: run代码inforinputmodelsessionthread