加载TensorFlow后分叉python进程

加载TensorFlow后分叉python进程,python,fork,tensorflow,Python,Fork,Tensorflow,tf.Session()不是fork安全的,这意味着当TensorFlow加载到内存中时,分叉进程后系统的行为未知 在多个进程之间共享多个设备(在一台机器上)是否有解决方案?在多个进程之间共享TensorFlow运行时的标准方法是使用,该方法也适用于一台机器 在一个进程中,您可以通过运行以下代码来启动服务器: import tensorflow as tf server = tf.train.Server.create_local_server() print server.target #

tf.Session()
不是
fork
安全的,这意味着当
TensorFlow
加载到内存中时,分叉进程后系统的行为未知


在多个进程之间共享多个设备(在一台机器上)是否有解决方案?

在多个进程之间共享TensorFlow运行时的标准方法是使用,该方法也适用于一台机器

在一个进程中,您可以通过运行以下代码来启动服务器:

import tensorflow as tf
server = tf.train.Server.create_local_server()
print server.target  # for other processes to connect
server.join()
默认情况下,此进程将拥有机器上的所有设备

在其他过程中,您可以创建连接到服务器的
tf.Session
对象:

sess = tf.Session("grpc://localhost:...")  # Use value of `server.target`.

这些会话可以像过程中会话一样使用。

谢谢您的回答。但有一个附带的问题:这仍然不适用于python内置的
多处理
库,因为所有进程都是彼此的分支,TF(即cuda)上下文将在它们之间共享?我说的对吗?是的,在创建服务器之前,您必须小心地分叉子进程,因为这就是初始化CUDA驱动程序的原因。再次感谢。创建服务器是指
tf.train.server.create\u local\u server()
或只是
import tensorflow
初始化CUDA驱动程序?我相信
import tensorflow
只加载驱动程序库,初始化只在第一次
tf.Session()
创建时发生,但我不能100%确定在这两个点之间进行分岔是否安全。