只需将其设置为这样的新值,是否可以为当前流程更改?
os.environ['PYTHONHASHSEED'] = 'random'
Run Code Online (Sandbox Code Playgroud)
Bak*_*riu 11
这取决于你的意思.
如果你的意思是改变当前解释器的行为而不是答案是否定的:
修改os.environ不可靠,因为在某些操作系统中,您无法修改环境(请参阅文档os.environ).
仅在启动解释器时检查环境变量,因此之后更改它们将不会对当前python实例产生任何影响.从文档:
这些环境变量会影响Python的行为,它们会在命令行切换之前处理,而不是
-E或-I.
(这意味着只有在启动解释器时才会检查它们,在运行任何用户代码之前).
AFAIK,无法动态设置随机散列种子,因此如果要激活散列随机化,则必须重新启动解释器.
如果你的意思,使新工艺由当前解释催生的行为如同该值前设置,然后是的, 假设你是一个支持的平台上运行putenv.在生成新进程时,默认情况下,它会继承当前进程的环境.您可以使用简单的脚本对此进行测试:
#check_environ.py
import os
import subprocess
os.environ['A'] = '1'
proc = subprocess.call(['python', '-c', 'import os;print(os.environ["A"])'])
Run Code Online (Sandbox Code Playgroud)
产量:
$ python check_environ.py
1
Run Code Online (Sandbox Code Playgroud)
请注意,在putenv实现中存在已知的错误(例如,在Mac OS X中),它会泄漏内存.因此,您希望尽可能避免修改环境.
| 归档时间: |
|
| 查看次数: |
2485 次 |
| 最近记录: |