多线程共享全局变量
import threading
import time
# 定义全局变量
g_num = 0
# 循环10000次,每循环1次给全局变量加1
def calc1():
# 加上global表示对全局变量的内存地址进行了修改
global g_num
for i in range(1000000):
g_num += 1
print("calc1:", g_num)
# 循环10000次,每循环1次给全局变量加1
def calc2():
# 加上global表示对全局变量的内存地址进行了修改
global g_num
for i in range(1000000):
g_num += 1
print("calc2:", g_num)
if __name__ == '__main__':
# 创建两个线程分别执行不同的任务
first_thread = threading.Thread(target=calc1)
second_thread = threading.Thread(target=calc2)
# 启动线程执行任务
first_thread.start()
# time.sleep(2)
# 线程等待(同步): 表示主线程等待第一个线程执行完成以后,代码才能继续往下执行
first_thread.join()
print("第一个线程执行完成了")
second_thread.start()
# 总结: 多线程同时对全局变量进行操作会有可能出现资源竞争,数据错误问题,解决办法:让一个线程执行完成再让另一个线程去执行
进程之间不共享全局变量
import multiprocessing
import time
# 全局变量
g_list = []
# 添加数据
def add_data():
for i in range(5):
g_