一、互斥锁介绍及特点
说明:对共享数据进行锁定,保证同一时刻只有一个线程去操作。
特点:
互斥锁是多个线程一起去抢。
谁先抢到锁是由CPU的调度决定的
没有抢到锁的线程需要等待,此时进入阻塞状态。
互斥锁使用完释放后,其它等待的线程会再去抢这个锁。
二、语法
import threading
# 创建锁
锁对象 = threading.Lock()
# 上锁
锁对象.acquire()
# 释放锁
锁对象.release()
三、互斥锁的使用
1、使用互斥锁

from threading import Thread,Lock from time import time g_num = 0 # 1.创建锁 mutex = Lock() def sum_num1(): # 2.在需要操作的数据位置上锁 mutex.acquire() for i in range(1000000): global g_num g_num += 1 print("sum1:", g_num) # 3.释放锁 mutex.release() def sum_num2(): # 上锁 mutex.acquire() for i in range(1000000): global g_num g_num += 1 print("sum2:", g_num) # 释放锁 mutex.release() if __name__ == '__main__': t1 = Thread(target=sum_num1) t2 = Thread(target=sum_num2) t1.start() t2.start()
运行结果:
四、使用线程等待或互斥锁的优缺点
优点:保证了数据的准确性
缺点:将多任务转换成单任务去执行,执行性能下降。