Python线程和全局变量
假设我在名为“firstModule.py”的模块中有以下函数: 现在我有了一个名为“secondModule.py”的不同模块: 我正在运行一个名为“mainModule.py”的模块,该模块具有以下内容(请注意全局“addCount”变量): 基本上,我希望两个模块中的“addCount”值都是来自“mainModule”的值。之后,当线程完成时,我想打印值Python线程和全局变量,python,multithreading,global-variables,Python,Multithreading,Global Variables,假设我在名为“firstModule.py”的模块中有以下函数: 现在我有了一个名为“secondModule.py”的不同模块: 我正在运行一个名为“mainModule.py”的模块,该模块具有以下内容(请注意全局“addCount”变量): 基本上,我希望两个模块中的“addCount”值都是来自“mainModule”的值。之后,当线程完成时,我想打印值 他们两个都是“a”。上面的例子不起作用。我想知道如何修复它。python中的模块是单例的,因此您可以将全局变量放在module glo
他们两个都是“a”。上面的例子不起作用。我想知道如何修复它。python中的模块是单例的,因此您可以将全局变量放在module globalModule.py中,让firstModule、secondModule和mainModule
import globalModule
都访问相同的addCount
但是,一般来说,线程具有全局状态是一种不好的做法
这是行不通的:
打印第一个模块
打印第二模块
因为在这里:
def calculate():
# addCount value here should be used from the mainModule
a=random.randint(0,5) + addCount
a
是函数calculate
的局部变量
如果您确实想将作为模块级变量写入,请添加全局声明:
def calculate():
# addCount value here should be used from the mainModule
global a
a=random.randint(0,5) + addCount
python中的模块是单例的,因此您可以将全局变量放在module globalModule.py中,同时拥有firstModule、secondModule和mainModuleimport globalModule
,它们都将访问相同的addCount
但是,一般来说,线程具有全局状态是一种不好的做法
这是行不通的:
打印第一个模块
打印第二模块
因为在这里:
def calculate():
# addCount value here should be used from the mainModule
a=random.randint(0,5) + addCount
a
是函数calculate
的局部变量
如果您确实想将作为模块级变量写入,请添加全局声明:
def calculate():
# addCount value here should be used from the mainModule
global a
a=random.randint(0,5) + addCount
将“addCount”传递给函数“calculate”,在“calculate”中返回“a”的值,并将其分配给MyThread实例中的新属性
def calculate(addCount):
a = random.randint(0, 5) + addCount
return a
将“addCount”传递给函数“calculate”,在“calculate”中返回“a”的值,并将其分配给MyThread实例中的新属性
def calculate(addCount):
a = random.randint(0, 5) + addCount
return a