Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python线程和全局变量_Python_Multithreading_Global Variables - Fatal编程技术网

Python线程和全局变量

Python线程和全局变量,python,multithreading,global-variables,Python,Multithreading,Global Variables,假设我在名为“firstModule.py”的模块中有以下函数: 现在我有了一个名为“secondModule.py”的不同模块: 我正在运行一个名为“mainModule.py”的模块,该模块具有以下内容(请注意全局“addCount”变量): 基本上,我希望两个模块中的“addCount”值都是来自“mainModule”的值。之后,当线程完成时,我想打印值 他们两个都是“a”。上面的例子不起作用。我想知道如何修复它。python中的模块是单例的,因此您可以将全局变量放在module glo

假设我在名为“firstModule.py”的模块中有以下函数:

现在我有了一个名为“secondModule.py”的不同模块:

我正在运行一个名为“mainModule.py”的模块,该模块具有以下内容(请注意全局“addCount”变量):

基本上,我希望两个模块中的“addCount”值都是来自“mainModule”的值。之后,当线程完成时,我想打印值
他们两个都是“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和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

将“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