import time
import threading
# 吃火锅鱼丸
guo = []
suo = threading.Condition() #条件锁
# 生产者负责生产
class Produce(threading.Thread):
def __init__(self):
super().__init__()
def run(self):
suo.acquire() #先锁住
while True:
time.sleep(1)
guo.append("鱼丸")
print("%s生产了一个鱼丸,现在锅里有%s个鱼丸"%(self.name,len(guo)))
if len(guo)>=5:
print("锅里已经有%s个鱼丸"%len(guo))
suo.notify() # 通知
suo.wait() # wait等待 释放另一个线程 # 消费者负责消费
class Consumer(threading.Thread):
def __init__(self):
super().__init__()
def run(self):
suo.acquire()
while True:
time.sleep(1.5)
guo.pop()
print("%s吃了一个鱼丸,现在锅里有%s个鱼丸"%(self.name,len(guo)))
if len(guo)<1:
print("锅里已经没有鱼丸了,请添加鱼丸。")
suo.notify() # 通知
suo.wait()# wait 等待 释放另一个线程
pro = Produce()
pro.start()
con = Consumer()
con.start() # 汽车订单变化
Car = ["保时捷911","丰田普拉多","哈弗H5","奔驰G500","路虎","法拉利","宝马X5","奥迪A8","膜拜单车","大巴车"]
suo = threading.Condition() #条件锁
List = []
index = -1
class car(threading.Thread):
def __init__(self):
super().__init__()
def run(self):
suo.acquire()
while True:
global index
time.sleep(2)
index+=1
List.append(Car[index])
print("恭喜靳志龙喜提一辆%s,请继续选择你喜爱的车"%Car[index])
suo.notify()
if len(List)>=10:
print("对不起,你的银行卡余额不足")
suo.release()
break
else:
suo.wait()
class carbox(threading.Thread):
def __init__(self):
super().__init__()
def run(self):
suo.acquire()
while True:
global index
time.sleep(0.5)
print("仓库里还有%s辆车"%(len(Car)-index-1))
suo.notify()
if len(List) >= 10:
print("哈哈,其实我们也没有车了,小哥哥")
suo.release()
break
else:
suo.wait()
aa = car()
aa.start()
bb = carbox()
bb.start()

python线程condition条件锁应用实例的更多相关文章

  1. python多线程threading.Lock锁用法实例

    本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...

  2. python线程的条件变量Condition的用法实例

      Condition 对象就是条件变量,它总是与某种锁相关联,可以是外部传入的锁或是系统默认创建的锁.当几个条件变量共享一个锁时,你就应该自己传入一个锁.这个锁不需要你操心,Condition 类会 ...

  3. python多线程--Condition(条件对象)

    Condition class threading.Condition(lock=None 这个类实现条件变量对象.条件变量允许一个或多个线程等待,知道它们被另一个线程唤醒. 如果给出了lock参数而 ...

  4. python 线程池和锁

    一.死锁现象与递归锁 锁:Lock线程安全,多线程操作时,内部会让所有线程排队处理.如:list/dict/Queue        线程不安全 + 人 => 排队处理. import thre ...

  5. (15)线程---Condition条件

      功能:也是通过阻塞控制线程数量.类似信号量\进程池\线程池的作用 语法:wait from threading import Condition con= Condition() conn.acq ...

  6. Linux 开发之线程条件锁那些事

    2019独角兽企业重金招聘Python工程师标准>>> 条件锁即在一定条件下触发,那什么时候适合用条件锁呢,那当然是你在等待一个符合的条件下触发.一个常用的例子就是在线程中无限循环执 ...

  7. python线程条件变量Condition(31)

    对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – 线程条件变量Condition. 一.线程条件变 ...

  8. threading 官方 线程对象和锁对象以及条件对象condition

    官方地址:https://docs.python.org/2/library/threading.html#thread-objects 以下只截取condition部分,其他Lock()以及thre ...

  9. 线程高级篇-Lock锁和Condition条件

    浅谈Synchronized: synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其 ...

随机推荐

  1. 在Ubuntu16.04中python环境下实现tab键补全

    1.编写tab.py的代码: 1 #!/usr/bin/env python 2 # python startup file 3 import sys 4 import readline 5 impo ...

  2. 2018.5.15Html标签初学

    body标签 -图标:&nbsp:(一个空格)&gt:(表示>)&lt:(表示<) -p标签:段落的划分 -br标签:换行 标签分为块级标签和行内标签. 块级标签: ...

  3. Flask实战-留言板-使用Flask-DebugToolbar调试程序、Flask配置的两种组织形式

    使用Flask-DebugToolbar调试程序 扩展Flask-DebugToolbar提供了一系列调试功能,可以用来查看请求的SQL语句.配置选项.资源加载情况等信息.这些信息在开发时会非常有用. ...

  4. Cron表达式解析

    每一个域可出现的字符如下:Seconds:          可出现     ", - * /"     四个字符,有效范围为0-59的整数Minutes:          可出 ...

  5. Typora学习笔记

    Typora学习笔记 标题 用"#"表示 快捷键:ctrl+1,2,3,4,5 居中 居中可用center标签 强调 使用强调 加粗 使用加粗 下划线 使用u标签:下划线 有序列表 ...

  6. Django 中 form 介绍

    目录 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...

  7. Gradle Repository

    // 该init.gradle文件,请保存到${USER_HOME}/.gradle/文件夹下,如:C:\Users\Administrator\.gradle allprojects { repos ...

  8. Spring AOP 简介

    Spring AOP 简介 如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用. AOP 即 Aspect Orien ...

  9. 爬微信好友签名和QQ好友签名

    先说如何爬微信好友签名,主要使用itchat,这个库提供直接的api来获取好友信息,只要用正则过滤出就行了.说一下步骤,就不贴代码了.# 登陆# 获取好友列表# 提取签名# jieba分词# word ...

  10. BZOJ5279: [Usaco2018 Open]Disruption

    题目大意:给你一棵n个节点的树,这n条边称为原边,另给出m条带权值的额外边,求删去每条原边后通过给出的m额外条边变回一棵树的最小价值.题解:看完题面以为是Tarjan连通性之类的题目,冷静分析后想到是 ...