Python中线程的互斥锁

Python中线程的互斥锁,第1张

    互斥锁可以对共享数据进行锁定,保证同一时刻只有一个线程可以执行,对于加锁的部分,只有单线程的效果,,对于整体而言,还是多线程
    注意:互斥锁是多个线程一起去抢,抢到就先执行,没有抢到就继续等待,等锁使用完后释放,其他线程才可以去抢这个锁

    锁的创建:mutex = thread.Lock()
    上锁:mutex.acquire()
    释放锁:mutex.release()


    注意:使用互斥锁要避免死锁情况出现,死锁产生的原因就是没有及时或者在正确的位置释放锁
import threading
import time
num = 0
def sum_num1():
    """加锁"""
    mutex.acquire()
    for i in range(1000000):
        global num
        num += 1
    """释放锁"""
    # mutex.release()
    print("sum_num1:",num)

def sum_num2():
    """加锁"""
    mutex.acquire()
    for i in range(1000000):
        global num
        num += 1
    mutex.release()
    print("sum_num2:",num)

if  __name__ == '__main__':
    """创建锁"""
    mutex = threading.Lock()
    """创建线程对象并启动"""
    sum1_thread = threading.Thread(target=sum_num1)
    sum2_thread = threading.Thread(target=sum_num2)
    sum1_thread.start()
    sum2_thread.start()

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/740134.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-28
下一篇2022-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存