如何在新的Python进程中设置环境变量

7

我正在使用Python中的"spawn"多进程上下文创建一个新的进程。

import multiprocessing
ctx = multiprocessing.get_context("spawn")

proc = ctx.Process(target=my_func)
proc.start()

我希望该过程具有一组环境变量。理想情况下,我在创建进程时应指定如下:

proc = ctx.Process(target=my_func, environment={"MY_NAME": "MY_VALUE"})

有没有什么方法可以做到这一点?我希望Python运行时这样做,以确保在运行任何Python代码之前设置这些环境变量。


显而易见的答案有什么问题吗?要么在调用ctx.Process()之前设置环境变量,要么将一个函数作为target传递,该函数设置环境,然后调用my_func - Kurtis Rader
一些像pytorch这样的导入库使用环境变量来确定可见的GPU。理想情况下,在导入任何内容之前,新进程的上下文已经设置好了这些变量。 - relh
2个回答

1
你可以通过 os 包访问和设置环境变量。
import os

print(os.environ)
os.environ['test'] = 1

1
如问题所述,我正在寻找Python运行时来处理此操作,以防止用户代码有机会继续执行。 - MRocklin
1
@MRocklin,有点不清楚。您是想要比我之前写的代码更多的东西吗?除了将代码放在另一个程序中进行导入和运行之外,我不清楚您还能够想象Python能做什么。假设您不想在Python之外简单地创建其他环境变量,我不确定您如何在没有将它们设置为程序的一部分的情况下可用。 - Chris

0

如果您正在本地开发,您可以将变量导出到本地环境。

export MY_NAME='Matt'


1
很不幸,我正在寻求在从Python启动新进程时动态更改值。 - MRocklin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接