from multiprocessing import Lock
from multiprocessing import Process
import json
import time
# def show_ticket(i):
# with open('ticket') as f:
# dic = json.load(f)
# print('%d:余票%s'%(i,dic['ticket']))
def buy_ticket(i,lock):
lock.acquire()
with open('ticket') as f:
dic = json.load(f)
time.sleep(0.1)
if dic['ticket'] > 0:
dic['ticket'] -= 1
print('\033[32m%d买到票了\033[0m'%i)
else:
print('\033[31m%d没有买到票\033[0m'%i)
time.sleep(0.1)
with open('ticket','w') as f:
json.dump(dic,f)
lock.release()
if __name__ == '__main__':
# for i in range(1,11):
# p = Process(target=show_ticket,args=(i,))
# p.start()
lock = Lock()
for i in range(1,11):
p = Process(target=buy_ticket,args=(i,lock))
p.start()
import time
import random
from multiprocessing import Process
from multiprocessing import Semaphore
def ktv(i,sem):
sem.acquire() #获取钥匙
print('%s走进ktv'%i)
time.sleep(random.randint(1,5))
print('%s走出ktv'%i)
sem.release()
if __name__ == '__main__' :
sem = Semaphore(4)
for i in range(20):
p = Process(target=ktv,args=(i,sem))
p.start()