线程同步锁

#同步锁
对于两个函数a,b,创建两条线程,并且让其睡眠,流程上看似轮流运行,其实不是,因为涉及到cpu切换去执行问题。
import threading
import time

def a():

for i in range(3):
print("a:"+str(i))
time.sleep(0.01)


def b():

for i in range(3):
print("b:"+str(i))
time.sleep(0.01)

a=threading.Thread(target=a)
b=threading.Thread(target=b)
a.start()
b.start()

#输出结果:
a:0
b:0
b:1
a:1
b:2 a:2

但是如果想让a先执行完毕再去执行b,则使用到同步锁
import threading
import time
r=threading.Lock() #创建锁
def a():
r.acquire() #获取锁
for i in range(3):
print("a:"+str(i))
time.sleep(0.01)
r.release() #释放锁

def b():
r.acquire()
for i in range(3):
print("b:"+str(i))
time.sleep(0.01)
r.release()
a=threading.Thread(target=a)
b=threading.Thread(target=b)
a.start()
b.start()

输出结果:
a:0
a:1
a:2
b:0
b:1
b:2

上一篇:Navicat 连接 mysql 出现Client does not support authentication protocol requested by server解决方案


下一篇:查看线程的名字和个数