day 34 进程线程排序 抢票 初级生产者消费者
# 实现的内容 模拟购票 20个人买,就有一张购票查,的时候大家都看到,但是购买只能一人购买成功#利用互斥锁# from multiprocessing import Process,Lock# import os,random,json,time# def search():# with open('db.txt',encoding= 'utf-8')as f:# dic = json.load(f) #反序列化 变成字典 因为文件里内容本身是字符串# print('%s剩余的票数%s'%(os.getpid(),dic['count']))# def get():# with open('db.txt',encoding='utf-8')as read_f:# dic = json.load(read_f)# if dic['count']>0:# dic['count']-=1# time.sleep(random.randint(1,3))# with open('db.txt','w',encoding='utf-8')as write_f:# json.dump(dic,write_f) ##把字典写入文件 并且以字符串的形式# print('%s抢票成功'% os.getpid())## def task(mutex):# search()# mutex.acquire() # acquire 获得 互斥获得 加锁# get()# mutex.release() # 互斥释放 解锁# if __name__=='__main__':# mutex = Lock()# for i in range(20):# p = Process(target=task,args=(mutex,))# p.start() # #p.join() # 这个效果不能让其他人看见有票##文件操作 文件的内容是默认存在的类型是字符串,而且里面用的json 必须是双引号。# mutex 互斥# mutex = Lock# mutex.acquire() 加锁# mutex.release 解锁 # db.txt# {"count": 1}# ----------线程的加锁的两种方法# from threading import Thread,Lock# import time# n=100## def task():# # global n# # mutex.acquire()# # temp=n# # time.sleep(0.1)# # n=temp-1# # mutex.release()## global n# with mutex:# temp=n# time.sleep(0.1)# n=temp-1# if __name__ == '__main__':# mutex=Lock()# t_l=[]# for i in range(100):# t=Thread(target=task)# t_l.append(t)# t.start()# for t in t_l:# t.join()# print(n)# ---------------###生产者和消费者 初级供给 实现的并发# from multiprocessing import Process,Queue# import os,random,time# def producer(q):# for i in range(10):# res = '包子%s'%i# time.sleep(0.5)# q.put(res)# print('%s生产了%s'%(os.getpid(),res))# ###time.sleep(random.randint(2,3)) #如果是启用此行 因为comsumer 的时间比较充裕比生产的# ##供远远小于求 所以出现串行,生产出一个就立马吃一个## def consumer(q):# while True:# res= q.get()# if res is None:# break# print('%s吃了%s'%(os.getpid(),res))# time.sleep(random.randint(2, 3))# if __name__== '__main__':# q = Queue()# p = Process(target=producer,args=(q,))# c = Process(target=consumer,args=(q,))# p.start()# c.start()# p.join()# q.put(None)# print('主') import queue #线程队列 # # 队列 线程的排序# q=queue.Queue(4)# q.put({'a':1})# q.put('xxxxx')# q.put(3)# q.put(4)# print(q.get())# print(q.get())# print(q.get())# print(q.get())# 1进程的排序# from multiprocessing import Queue# q = Queue(3)# q.put(3)# q.put('wang')# q.put({'wang':777})# print(q.get())# print(q.get())# print(q.get())# 3# wang# {'wang': 777}# 进程引用序列 从前到后依次取值# 变量=Queue(数字存几个)# 变量.put(任意数据类型)# 变量.get() 2#优先级队列 从小到大的排列# q=queue.PriorityQueue(4)# q.put((10,{'a':1}))# q.put((-1,'xxxxx'))# q.put((0,3))# q.put((4,))## print(q.get())# print(q.get())# print(q.get())# print(q.get())## (-1, 'xxxxx')# (0, 3)# (4,)# (10, {'a}# 3 堆栈 排序从后到前排序# q=queue.LifoQueue(4)# q.put({'a':1})# q.put('xxxxx')# q.put(3)# q.put(4)## print(q.get())# print(q.get())# print(q.get())# print(q.get()) 进程 线程的顺序
守护进程:两个子进程,其中一个是守护子进程,一个主进程, 守护进程结束:是在主进程代码一结束就结束,守护线程:两个子线程,其中一个是守护子线程,一个是主线程,守护线程结束:是在非守护子线程结束就结束。
转载于:https://www.cnblogs.com/xiaoluoboer/p/7978697.html
day 34 进程线程排序 抢票 初级生产者消费者相关推荐
- 菜鸟学习笔记:Java提升篇8(线程2——线程的基本信息、线程安全、死锁、生产者消费者模式、任务调度)
菜鸟学习笔记:Java提升篇8(线程2--线程的基本信息.线程安全.死锁.生产者消费者模式.任务调度) 线程的基本信息 线程同步 线程安全 死锁 生产者消费者模式 任务调度(了解) 线程的基本信息 J ...
- 基于Lock的卖票和生产者消费者案例
1.三个售票员卖出30张票 线程 操作(对外暴露的调用方法) 资源类 2.生产者消费者问题 题目:现在两个线程,可以操作初始值为零的一个变量,实现一个线程对该变量加1,一个线程对该变量减1,实现交替, ...
- java-线程安全问题,线程实现线程同步,线程状态,等待唤醒机制,生产者消费者模型
目录标题 解决线程安全问题手段:线程同步 实现同步操作步骤 1.同步代码块 2.同步方法 静态同步方法 3.Lock接口的锁机制 线程状态 生产者消费者模型:等待唤醒 等待唤醒案例 线程安全问题是不能 ...
- Java 多线程(二)线程间的通信应用--生产者消费者(未完)
对于多个生产者和消费者. 为什么要定义while判断标记. 原因:让被唤醒的线程再一次判断标记. 为什么定义notifyAll, 因为需要唤醒对方线程. 因为只用notify,容易出现只唤醒本方线程的 ...
- 线程的基本协作和生产者消费者
协作基础(wait/notify) Java的根父类是Object,Java在Object类而非Thread类中,定义了一些线程协作的基本方法,使得每个对象都可以调用这些方法,这些方法有两类,一类是w ...
- Java20-day11【实现多线程(进程、线程-调度-控制-生命周期)、线程同步(同步代码块、线程安全、Lock)、生产者消费者(模式概述、案例)】
视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...
- 浅谈抢票软件的危害及模拟分析
抢票软件的出现,在一定程度上缓解了 铁路12306官方购票系统的售票压力,并被人们加 上"买票快","买票方便"的标签,但其实抢票 软件类似于生活中的一种插队现 ...
- JUC系列之模拟抢票(N人同时抢票,票不足系统补仓,N-M人继续抢票)
下载 http://download.csdn.net/download/crazyzxljing0621/9969870 前言 10.1要去苏州玩. 9月初去携程买票,发现过几天才放票 现在可以预约 ...
- Java并发队列ConcurrentLinkedQueue抢票示例
ConcurrentLinkedQueue并发抢票示例 在学习java并发的时候,在网上看了几个靠加锁方法块的方法来演示抢票的示例,运行起来还是要起并发冲突.后来看到一个用ConcurrentLink ...
- 假期延长,抢票软件到底还行不?
作者 | 唐亚华 本文经授权转载自燃财经(ID:rancaijing) 春节假期即将结束,人口大迁移又要来临. 虽然12306近日已经宣称屏蔽了部分抢票软件,并推出官方候补功能,但市面上提供抢票服务的 ...
最新文章
- D1net阅闻:思科占全球交换路由器53%市场份额
- jquery UI 后台图
- 【C++提高班】c++数组遍历比较相邻的数值
- 从spring-session存储结构探讨session存储方案的演变
- window.open 不显示地址栏_谷歌浏览器Chrome显示「由贵单位管理」怎么解决?非阿里...
- 此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)
- 有道云笔记到简书的迁移工具
- Design Patterns - Mediator Pattern
- 面试系列第1篇:常见面试题和面试套路有哪些?
- kali操作系统SSH问题解决方案
- [转载] python内置函数 compile()
- Solidity陷阱:以太坊的随机数生成
- java 性能优化:35 个小细节,让你提升 java 代码的运行效率
- Unity基础学习之Unity引擎学习(一)
- mysql 全库查询关键字_数据库查询语句关键字总结
- 人工智能基础(高中版)教材补充和资源分享之二 机器人学矩阵
- 千年3步法外挂 千年3脚本 千年3外挂 千年3最新外挂
- [产品经理]产品经理的职责
- 4.10 期货每日早盘操作建议
- 数学建模学习2论文排版