zoukankan      html  css  js  c++  java
  • 4,5 04 互斥锁 抢票程序

    # 互斥锁/进程锁/同步锁
    # import json
    import time
    from multiprocessing import Process,Lock
    
    def show_t(i):
    
        with open('ticket','r',encoding='utf-8') as f:
            ticket_data = f.read()
        # print(ticket_data)
        t_data = eval(ticket_data)
        # print(t_data,type(t_data))
        print('%s查询剩余票数为%s'%(i,t_data['count']))
    
    def get_t(i,l1):
        l1.acquire()
        with open('ticket', 'r', encoding='utf-8') as f:
            ticket_data = f.read()
            # print(ticket_data)
        t_data = eval(ticket_data)
        # print(t_data,type(t_data))
        # print('%s查询剩余票数为%s' % (i, t_data['count']))
        if t_data['count'] > 0:
            t_data['count'] -= 1
            print('%s抢票成功'%i)
            time.sleep(0.2)
            with open('ticket', 'w') as f:
                f.write(str(t_data))
    
        else:
            print('没票了!!!')
        l1.release()
    
    if __name__ == '__main__':
        l1 = Lock()
        for i in range(10):
            p1 = Process(target=show_t,args=(i,))
            p1.start()
        for i in range(10):
            p2 = Process(target=get_t,args=(i,l1) )
            p2.start()
    
    
    
    
    
    # import time
    #
    # def f1(i,lic):
    #     lic.acquire()
    #     time.sleep(1)
    #     print(i)
    #     lic.release()
    #
    # if __name__ == '__main__':
    #     lic = Lock()
    #     for i in range(20):
    #         p = Process(target=f1, args=(i,lic))
    #         p.start()
  • 相关阅读:
    1.Hibernate配置
    CKEditor/FCKEditor的使用
    介绍一个好用的工具类库commons-beanutils
    SpringBean.xml配置
    MVC框架显示层——Velocity技术
    mysql CMD命令
    day 05
    day 04
    day03
    python day 02
  • 原文地址:https://www.cnblogs.com/work14/p/10266965.html
Copyright © 2011-2022 走看看