gpt4 book ai didi

python - 从模块访问函数中的局部变量

转载 作者:行者123 更新时间:2023-12-01 06:14:25 30 4
gpt4 key购买 nike

我的主程序中有一个函数,它尝试从导入的模块中检索信息,这是我编写的不同脚本。该模块吐出一个变量,我通过将其设置为全局变量来从主程序访问该变量。

但是,由于我正在对请求信息的函数进行线程化,因此通过将来自单独请求的信息添加到一个变量中,全局变量会受到污染。我正在寻找的是一种访问模块中函数中的局部变量的方法。

主程序:

import module

def threaded_function():
module.function(var1, var2)
print module.output

模块:

def function(var1, var2):
global output
output = []
DoThingsWithVars(var1, var2)
output.append(result)

由于线程导致它被多次访问,我想我不会使用全局变量并为每个请求获取局部变量。知道我怎样才能得到这些吗?

最佳答案

嗯,func locals 唯一有意义的情况是闭包和生成器。您可以通过 __closure__ 访问它们属性,但您必须为每个单独的线程生成闭包,并且将线程本地列表传递给函数会更容易。

有时实际使用的另一种方法是使用线程局部全局变量。阅读 http://docs.python.org/library/threading.html#threading.local了解详情。在你的情况下,它会像这样工作:

locs = threading.local()
def function(var1, var2):
global locs
if not locs.output:
locs.output = []
DoThingsWithVars(var1, var2)
locs.output.append(result)

关于python - 从模块访问函数中的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4076799/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com