我只是想知道tensorflow的会话运行接口是否是可重入的,因为在我的情况下,多个线程可以访问同一个会话。 顺便说一句,我使用tensorflow的c ++ api。
答案 0 :(得分:0)
在python接口中,可以在不同的线程中使用相同的tf.Session
,但需要注意,即使它仍然是创建它的线程的属性。我想C ++中的情况类似。
N.B。默认会话是当前线程的属性。如果你 创建一个新线程,并希望在其中使用默认会话 线程,您必须在其中明确添加
with sess.as_default():
线程的功能。N.B。输入
with sess.as_default():
块不会影响。{1}} 当前默认图表。如果您使用多个图表,和 您sess.graph
与tf.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.