Day11 进程相关

互斥锁的原理及案例分析

速度  内存/磁盘

安全  互斥锁

互斥锁与CPU调度的区别

jion模拟抢票

# 互斥锁的原理:就是将多个任务对共享数据修改操作由并发变成”串行“,牺牲了效率保证数据安全

from multiprocessing import Process,Lock
import json
import time,random

def search(i):
    with open('db.json','rt',encoding='utf-8') as f:
        dic=json.load(f)
        time.sleep(1)
        print('路人%s查看到剩余票数:%s' %(i,dic['count']))

def get(i):
    with open('db.json','rt',encoding='utf-8') as f:
        dic=json.load(f)
    if dic['count'] > 0:
        # 有票
        dic['count']-=1
        time.sleep(random.randint(1,3))
        with open('db.json','wt',encoding='utf-8') as f:
            json.dump(dic,f)
            print('路人%s抢票成功' % i)

    else:
        print('路人%s抢票失败' %i)


def task(i,mutex):
    search(i)
    mutex.acquire()
    get(i)
    mutex.release()

if __name__ == '__main__':
    mutex = Lock()

    for i in range(1,11):
        p=Process(target=task,args=(i,mutex))
        p.start()
        # p.join()

    print('')
互斥锁模拟抢票

 生产者与消费者模型

什么是生产者消费者?

为什么用生产者消费者?

怎么用生产者消费者?

生产者与消费者模型的案例

生产者与消费者模型的bug

生产者与消费者模型与守护线程的结合

线程

 

原文地址:https://www.cnblogs.com/swiki/p/9613030.html