python 全局变量 子线程中
时间: 2023-12-12 18:24:51 浏览: 150
Python教程之全局变量用法
在Python中,全局变量在子线程中可以通过共享内存的方式进行访问。具体方法如下:
1. 在子线程内部使用`global`关键字声明全局变量,以便在函数内部更新全局变量的值。
2. 在主线程中创建全局变量,并在子线程中通过引用该全局变量进行读取或修改。
例如,在上述代码中,我们可以通过以下方法在子线程中访问全局变量:
1. 在子线程类中创建一个全局变量。
```python
import threading
class MyThread(threading.Thread):
global_var = 0
def __init__(self, target=None, args=()):
super(MyThread, self).__init__()
self.func = target
self.args = args
def run(self):
# 在子线程中访问全局变量
global global_var
global_var = self.func(*self.args)
def get_result(self):
try:
return global_var
except Exception:
return None
```
2. 在主线程中创建一个全局变量,并在子线程中通过引用该全局变量进行读取或修改。
```python
from threading import Thread
import time
global_var = None
def fun():
global global_var
global_var = "123"
time.sleep(5)
return global_var
if __name__ == "__main__":
T = MyThread(target=fun)
T.start()
T.join()
print(T.get_result())
print(global_var)
print("结束")
```
在这个例子中,通过将全局变量定义在子线程类中或主线程中,我们可以在子线程中使用`global`关键字声明并访问该全局变量。然后在主线程中,我们可以通过子线程对象的方法`get_result()`获取子线程中更新后的全局变量的值,或者直接访问全局变量`global_var`来获取最终的结果。
阅读全文