将两个单独的GPU分配给python中的不同线程?

R.y*_*y.z 6 python gpu multi-gpu

我想使用两个python源代码,第一个是使用开发的,tensorflow另一个是使用开发的pythorch。我想使用单独的GPU在线程中运行这些代码。两个代码的输入是相同的,并且当两个代码的结果准备好时,会有一些后处理。

我无法使用tf.device,因为它在初始化时会获取所有可用的GPU,并且我必须使用CUDA_VISIBLE_DEVICES环境变量。可通过在python中设置CUDA_VISIBLE_DEVICES来选择GPU访问。

os.environ["CUDA_VISIBLE_DEVICES"] = "Accessible_GPUs"
Run Code Online (Sandbox Code Playgroud)

但不幸的是,似乎CUDA_VISIBLE_DEVICES不能与线程一起使用:

os.environ["CUDA_VISIBLE_DEVICES"] = "2"
Thread(target = method_from_code1).start()
os.environ["CUDA_VISIBLE_DEVICES"] = "3"
Thread(target = method_from_code2).start()
Run Code Online (Sandbox Code Playgroud)

现在的问题是为每个线程的环境变量设置不同的值。这个问题有解决方案吗?