进程锁

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

 

posted @ 2018-09-07 10:05  Woowo  阅读(137)  评论(0编辑  收藏  举报