python同步锁小例子

前言:对于那些每次只允许一个线程操作的数据,我们可以使用同步锁来解决

需求:账户余额现在有500块钱、现在要存入5000块、同时又要花掉200块,这两个操作就相当于两个进程,它们现在都要来操作余额这个数据。

实现代码如下:

import threading 
import time
card_money = 500  #账户余额
#先声明一个锁
myLock=threading.Lock()
def  myCard(money):
    #上锁
    myLock.acquire()
    global card_money
    time.sleep(2)
    card_money=card_money+money
    #改完数据后解锁
    myLock.release()
#创建线程
saveMoney=threading.Thread(target=myCard,args=(5000,))
useMoney =threading.Thread(target=myCard,args=(-200,))
#启动线程
saveMoney.start()
useMoney.start()
#join  因为主线程需要在子线程都执行完才执行
saveMoney.join()
useMoney.join()
#主线程
print("现在银行卡余额为:",card_money)

最后的账户余额为:5300。这里加同步锁就是为了当一个线程解锁后另一个线程才能操作对应数据

原文地址:https://www.cnblogs.com/yanghr/p/14690484.html