# -*- encoding: UTF-8 -*-
from multiprocessing import Pool
from multiprocessing import Lock
import os
max=4
col=0
row=0
ticket=[[0 for r in range(4)] for c in range(4)]
def buy_ticket(name):
lock=Lock()
lock.acquire()
global row,col,ticket
if row < max:
ticket[row][col]=1
print('task %s Your seat is %s %s'%(name,str(row),str(col)))
if col >= max-1:
col=0
row+=1
else:
col+=1
else:
print('Sold out!')
lock.release()
if __name__=='__main__':
p=Pool(4)
for i in range(16):
p.apply_async(buy_ticket,args=(str(i),))
p.close()
p.join()
from multiprocessing import Pool
from multiprocessing import Lock
import os
max=4
col=0
row=0
ticket=[[0 for r in range(4)] for c in range(4)]
def buy_ticket(name):
lock=Lock()
lock.acquire()
global row,col,ticket
if row < max:
ticket[row][col]=1
print('task %s Your seat is %s %s'%(name,str(row),str(col)))
if col >= max-1:
col=0
row+=1
else:
col+=1
else:
print('Sold out!')
lock.release()
if __name__=='__main__':
p=Pool(4)
for i in range(16):
p.apply_async(buy_ticket,args=(str(i),))
p.close()
p.join()
print('The parent pro end')
用了lock之后,为什么还会出错?