IPC 进程间通信(inter-Process Communicate)
锁机制(Lock)
l = Lock() 开启一个锁机制(实例化) 一把锁配一个钥匙
l.acquire() 获得钥匙,锁门
l.release() 还钥匙,开门
# 模拟银行取钱机制
from multiprocessing import Lock,Process
import time
def save_money(l,num):
l.acquire() # 获得钥匙,锁门
for i in range(1,51):
num += 1
print(num)
l.release() # 还钥匙,开门
def draw_money(l,num):
l.acquire()
for i in range(1,51):
num -= 1
print(num)
l.release()
if __name__ == '__main__':
l = Lock() # 实例化一个锁
num = 50
p = Process(target=save_money,args=(l,50)) # 实例化一个子进程
p.start() # 开启子进程
p1 = Process(target=draw_money,args=(l,50)) # 实例化一个子进程
p1.start() # 开启p1这个子进程
time.sleep(3)
print(num)
# 模拟抢票机制
from multiprocessing import Process,Lock
def check_ticket(i): # 不受限制所有人都可以查询
with open('ticket') as f:
num = f.read()
print('第%s个人查到还有%s张票。' % (i,num))
def buy_ticket(i,l): # 受限制的,有一个人在买票的时候其他人不能进行买票操作需要等待上一个人操作完。
l.acquire()
with open('ticket') as f:
num = int(f.read())
if num > 0: # 判断票数是否大于零,否的话则不能进行买不到票。
print('