互斥锁
多个进程之间的内存空间是隔离的,但是硬盘,数据库,打印终端都是共享的 。因此当多个进程同时修改硬盘中的同一个文件,或者修改数据库中的同一条记录时,就存在资源竞争的问题,容易出错。
以抢票为例:
from multiprocessing import Process
import time,json
def find(name):
time.sleep(1) # 模拟网络延迟
dic=json.load(open('ticket.txt'))
print('%s 剩余票数 %s ' %(name,dic['count']))
def get(name):
time.sleep(1) #模拟网络延迟
dic = json.load(open('ticket.txt'))
if dic['count'] >0:
dic['count']-=1
json.dump(dic,open('ticket.txt','w'))
print