线程与线程数据是共享的
from threading import Thread def func(lst, name): lst.append(66) print(name, lst) if __name__ == '__main__': lst = [1, 2] p1 = Thread(target=func, args=(lst, "线程1")) p2 = Thread(target=func, args=(lst, "线程2")) p1.start() p2.start() p1.join() p2.join() print("主线程结束", lst)
执行结果:
线程1 [1, 2, 66] 线程2 [1, 2, 66, 66] 主线程结束 [1, 2, 66, 66]
global来演示线程与线程之间数据是共享的
from threading import Thread def func(name): print(f"{name}开始") global n n = 0 print(f"{name}结束, n={n}") if __name__ == '__main__': n = 100 p1 = Thread(target=func, args=("线程1",)) p2 = Thread(target=func, args=("线程2",)) p1.start() p2.start() p1.join() p2.join() print(f"主线程结束,n={n}")
运行结果:
线程1开始 线程1结束, n=0 线程2开始 线程2结束, n=0 主线程结束,n=0