Python练习(day9)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python练习(day9)相关的知识,希望对你有一定的参考价值。

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

以上是关于Python练习(day9)的主要内容,如果未能解决你的问题,请参考以下文章

python基础-day9-函数

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

day9-复习学习python实例

python学习day9笔记

python基础练习题(题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5)

DAY9-字符串笔记整理2018-1-19