加锁虽然会降低执行效率,但是保证了数据的稳定性和安全性
由于线程中的数据共享,以及线程的并发机制,和cpu时间片轮转机制,所以导致有可能某线程未全部运行完毕,导致线程切换导致数据的混乱。
a = 0 def add_f(lock): global a for i in range(200000): with lock: a += 1 def sub_f(lock): global a for i in range(200000): with lock: a -= 1 from threading import Thread,Lock lock = Lock() t1 = Thread(target=add_f,args=(lock,)) t1.start() t2 = Thread(target=sub_f,args=(lock,)) t2.start() t1.join()#需要使用join方法阻塞下 t2.join()#需要使用join方法阻塞下
print(a)