其实在多线程中锁的概念非常简单,就是为了让一个线程运行,其余线程等着。因为多线程会出现资源竞争的问题,为了解决这个问题,就是让子线程之间不会来回切换,从而提出了锁的概念。大家直接运行下面的程序就能明白其中的道理。
import time
import threading
#单线程需要的时间会更长
lock=threading.Lock()
def sing():
"""正在唱歌"""
lock.acquire()#获得锁
for i in range(5):
print("正在唱歌")
time.sleep(1)
lock.release()#释放锁
def dump():
"""正在跳舞"""
lock.acquire() # 获得锁
for i in range(5):
print("正在跳舞")
time.sleep(1)
lock.release() # 释放锁
def main():
# 设置daemon=True会标记其为守护线程,如果剩下的线程只有守护线程时,整个python程序都会退出
a=threading.Thread(target=sing,daemon=False)
b=threading.Thread(target=dump,daemon=False)
a.start()
b.start()
# while True:
# print(threading.enumerate())
# break
if __name__=="__main__":
main()