tensorflow的会话运行界面是否可重入?

时间:2018-05-08 02:50:03

标签: tensorflow reentrancy

我只是想知道tensorflow的会话运行接口是否是可重入的,因为在我的情况下,多个线程可以访问同一个会话。 顺便说一句,我使用tensorflow的c ++ api。

2 个答案:

答案 0 :(得分:0)

在python接口中,可以在不同的线程中使用相同的tf.Session,但需要注意,即使它仍然是创建它的线程的属性。我想C ++中的情况类似。

From the docs

  

N.B。默认会话是当前线程的属性。如果你   创建一个新线程,并希望在其中使用默认会话   线程,您必须在其中明确添加with sess.as_default():   线程的功能。

     

N.B。输入with sess.as_default():块不会影响。{1}}   当前默认图表。如果您使用多个图表,和   您sess.graphtf.get_default_graph的值不同   必须明确输入with sess.graph.as_default():块才能生成   sess.graph默认图表。

答案 1 :(得分:0)

我在tensorflow源代码中找到答案。 tensorflow / core / public / session.h,在其评论中:

// A Session allows concurrent calls to Run(), though a Session must
/// be created / extended by a single thread.
///
/// Only one thread must call Close(), and Close() must only be called
/// after all other calls to Run() have returned.