#模块:Lock #导入方法:from multiprocessing import Process,Lock #模块方法: l=Lock() l.acquire() #对所访问的资源加锁 l.release() #释放锁 #使用方法:一般在需要访问的资源的那部分代码加锁释放锁,但在初学阶段可以先包含整段程序 ###########模拟抢票程序 from multiprocessing import Process,Lock import time #在进行买票的时候,多个进程间有可能会出现第一个进程虽然先到达了,但是刚好时间片用完,这时候就会使得第一个到达的不一定会先买得到票 #不加锁的话,有可能在打开文件的时候另一个进程也打开了该文件,导致买到票的一个进程中的结果没有保存就被另一个进程所用了,以至于可能造成一张票多个人购买成功的情况 def check(i): with open("residue") as f: count=int(f.read()) #文件读取时为字符串类型,需要转为整数类型进行判断 if count>0: print("第{}个人查到了余票为{}".format(i,count)) else: print("已经没有票了") def purchase(i,l): #进行加锁操作 l.acquire() with open("residue") as f: count = int(f.read()) time.sleep(0.1) if count>0: print("第{}个人买到票了".format(i)) count-=1 else: print("