为什么线程之间共享全局变量?
解答:因为多线程是在同一个进程中,所以可以共享全局变量。
示例1:不加join方法的效果:
根据CPU的调度的不同,读取和写入两个任务会分别对全局变量进行操作。导致期望的结果不能满足。
from threading import * from time import * g_list = [] def add_data(): for i in range(3): # 修改全局变量的值,因为列表是可变类型,在原有内存地址上新增数据,所以不需要声明global g_list.append(i) print("add:", i) sleep(0.2) def read_data(): print("读取数据完成:",g_list) if __name__ == '__main__': t1 = Thread(target=add_data) t2 = Thread(target=read_data) t1.start() t2.start()