进程锁

对于多个进程而言,可能存在在同一时间延迟时间内,有多个进程对某一数据采取了操作,那么这样对数据的稳定性就有很大的问题。如在,购票系统中,如果不加索的机制,那么就可能出现同一张票卖给多个人。

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()

 

你可能感兴趣的:(python)