如何在tensorflow中并发`session.run(...)`调用之间共享变量?

时间:2017-03-29 22:15:28

标签: python multithreading tensorflow

如果对同一个会话sess.run(...)进行两次并发调用,那么如何在tensorflow中同时访问变量?

在调用run时,每个调用都会看到变量的快照,在整个调用过程中是否一致?或者他们会看到变量的动态更新,只保证每个变量的原子更新吗?

我正在考虑在单独的CPU线程上运行测试集评估,并且想要验证它与在CPU设备上并行运行推理操作一样简单。

我很难确定提供哪些保证使会话“线程安全”。

1 个答案:

答案 0 :(得分:3)

在进行一些实验后,似乎每次调用sess.run(...)确实会看到变量的一致时间点快照。

为了测试这个,我进行了2次大矩阵乘法运算(每次完成大约需要10秒),并在之前,之间和之后更新单个依赖变量。在另一个线程中,我每隔1/10秒抓取并打印该变量,以查看它是否在第一个线程仍在运行时检测到操作之间发生的变化。它没有,我只看到它的初始值和最终值。因此,我得出结论,变量只在该运行结束时对sess.run(...)的特定调用之外可见。