当前位置: 代码迷 >> 综合 >> python进程锁
  详细解决方案

python进程锁

热度:49   发布时间:2023-10-08 16:17:42.0
# 进程锁的代价是,失去异步效果
# db.txt文件内容:{"count": 1}from multiprocessing import Process
from multiprocessing import Lock
import time
import jsondef search():time.sleep(1)f = open('json.txt','r',encoding='utf-8')ticket =json.load(f)print(f"剩余票数:{ticket['count']}")f.close()return ticket
def buy():ticket = search()if ticket['count'] > 0:ticket['count'] -=1print('购买完成')f = open('json.txt', 'w')f.write(json.dumps(ticket))def task(lock):lock.acquire() # 上锁buy()lock.release() #解锁if __name__ == '__main__':lock = Lock()for i in range(3):p = Process(target=task,args=(lock,)) # 创建三个进程,每个进程都加锁,表示该进程完成后才能执行下个进程p.start()返回结果:
剩余票数:1
购买完成
剩余票数:0
剩余票数:0

  相关解决方案