对于多个进程而言,可能存在在同一时间延迟时间内,有多个进程对某一数据采取了操作,那么这样对数据的稳定性就有很大的问题。如在,购票系统中,如果不加索的机制,那么就可能出现同一张票卖给多个人。
from multiprocessing import Lock,Process
def buy(lock):
lock.acquire() #获取钥匙在acquire()和release()之间的代码在同一时间只允许一个进程执行,当一个进程完成后将钥匙归还后,其他的进程才可以获得钥匙。
if count>=0:
print('买到票了')
count=count-1
else:
print('没票了')
lock.release() #还锁
if __name__=='__main__':
lock=Lock() #初始化一把锁
for i in range(10):
p=Process(target=buy,args=(lock,)) #要把锁当作参数传进去buy()函数中
p.start()
锁:1.锁会一定程度上影响速度。
2.锁容易引起死锁。
一种简单的死锁
lock=Lock()
lock.acquire()
lock.acquire()
lock.release()