练习1、模拟抢车票(进程同步 锁)
    代码1:(并发运行,效率高,但竞争同一文件,数据写入错乱)
        from multiprocessing import Process
        import time,json,random
        def search():
                dic=json.load(open('db.txt'))
                print('剩余票数%s' %dic['count'])
        def get():
                dic=json.load(open('db.txt'))
                time.sleep(0.1) #模拟读数据的网络延迟
                if dic['count'] >0:
                        dic['count']-=1
                        time.sleep(0.2) #模拟写数据的网络延迟
                        json.dump(dic,open('db.txt','w'))
                        print('购票成功')
        def task():
                search()
                get()
        for i in range(3): #模拟并发100个客户端抢票
                p=Process(target=task)
                p.start()
    代码2:加锁:由并发变成了串行,牺牲了运行效率,但保证了数据的安全
        from multiprocessing import  Process,Lock
        import json,time
        def search():
                dic=json.load(open('db.txt'))
                print('剩余票数%s' %dic['count'])
        def get():
                dic = json.load(open('db.txt'))
                time.sleep(0.1)
                if dic['count']>0:
                        dic['count']-=1
                        time.sleep(0.1)
                        json.dump(dic,open('db.txt','w'))
                        print('购票成功')
                else:
                        print('没票了')
        def task(lock):
                search()
                lock.acquire()
                get()
                lock.release()
        lock=Lock()
        for i in range(3):
                p=Process(target=task,args=(lock,))
                p.start()