当前位置: 首页 > news >正文

安徽建设厅官方网站响应式网站设计思路

安徽建设厅官方网站,响应式网站设计思路,福建网站建设费用,英文网站建设详细方案文章首发微信公众号#xff0c;微信搜索#xff1a;猿说python对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – 线程条件变量Condition.一.线程条件变量Condition相关函数介绍acquire() — 线程…文章首发微信公众号微信搜索猿说python对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – 线程条件变量Condition.一.线程条件变量Condition相关函数介绍acquire() — 线程锁注意线程条件变量Condition中的所有相关函数使用必须在acquire() /release() 内部操作release() — 释放锁注意线程条件变量Condition中的所有相关函数使用必须在acquire() /release() 内部操作wait(timeout) — 线程挂起(阻塞状态)直到收到一个notify通知或者超时才会被唤醒继续运行超时参数默认不设置可选填类型是浮点数单位是秒。wait()必须在已获得Lock前提下才能调用否则会触发RuntimeErrornotify(n1) — 通知其他线程那些挂起的线程接到这个通知之后会开始运行缺省参数默认是通知一个正等待通知的线程,最多则唤醒n个等待的线程。notify()必须在已获得Lock前提下才能调用否则会触发RuntimeErrornotify()不会主动释放LocknotifyAll() — 如果wait状态线程比较多notifyAll的作用就是通知所有线程二.线程条件变量Condition原理在前面的文章已经介绍过互斥锁主要作用是并行访问共享资源时保护共享资源防止出现脏数据。python 条件变量Condition也需要关联互斥锁同时Condition自身提供了wait/notify/notifyAll方法用于阻塞/通知其他并行线程可以访问共享资源了。可以这么理解Condition提供了一种多线程通信机制假如线程1需要数据那么线程1就阻塞等待这时线程2就去制造数据线程2制造好数据后通知线程1可以去取数据了然后线程1去获取数据。三.线程条件变量Condition使用案例一成语接龙# !usr/bin/env python # -*- coding:utf-8 _*-Author:何以解忧 Blog(个人博客地址): shuopython.com WeChat Official Account(微信公众号)猿说python Github:www.github.comFile:python_.py Time:2019/10/21 21:25Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累 # 导入线程模块 import threading# 创建条件变量condition con threading.Condition()def thread_one(name):# 条件变量condition 线程上锁con.acquire()print({}:成语接龙准备好了吗.format(name))# 唤醒正在等待(wait)的线程con.notify()# 等待对方回应消息使用wait阻塞线程等待对方通过notify唤醒本线程con.wait()print({}:一干二净.format(name))# 唤醒对方con.notify()# 等待消息答应con.wait()print({}:一天就知道看抖音美女给你来个简单点的来了毛手毛脚.format(name))# 唤醒对方con.notify()# 等待消息答应con.wait()print({}:哟哟哟不错不错.format(name))# 唤醒对方con.notify()# 条件变量condition 线程释放锁con.release()def thread_two(name):# 条件变量condition 线程上锁con.acquire()# wait阻塞状态等待其他线程通过notify唤醒本线程con.wait()print({}:准备好了~开始吧.format(name))# 唤醒对方con.notify()# 等待消息答应con.wait()print({}:净你妹啊没法接...来个简单点的....format(name))# 唤醒对方con.notify()# 等待消息答应con.wait()print({}:嘿,这个我知道脚踏实地.format(name))# 唤醒对方con.notify()con.release()if __name__ __main__:# 创建并初始化线程t1 threading.Thread(targetthread_one,args(A))t2 threading.Thread(targetthread_two,args(B))# 启动线程 -- 注意线程启动顺序启动顺序很重要t2.start()t1.start()# 阻塞主线程等待子线程结束t1.join()t2.join()print(程序结束)输出结果A:成语接龙准备好了吗 B:准备好了~开始吧 A:一干二净 B:净你妹啊没法接...来个简单点的... A:一天就知道看抖音美女给你来个简单点的来了毛手毛脚 B:嘿,这个我知道脚踏实地 A:哟哟哟不错不错 程序结束案例二生产者与消费者模式以吃火锅为例一盘老肉片有10块肉吃完了又重新往锅里加….生产者往锅里加老肉片每次加一盘(10块)消费者吃煮熟的肉片没吃一片肉片数量减一吃完为止;# 导入线程模块 import threading import time# 创建条件变量condition con threading.Condition() meat_num 0def thread_consumers():# 条件变量condition 线程上锁con.acquire()# 全局变量声明关键字 globalglobal meat_nummeat_num 0# 等待肉片下锅煮熟con.wait()while True:print(我来一块肉片...)meat_num - 1print(剩余肉片数量%d%meat_num)time.sleep(0.5)if meat_num 0:# 肉片吃光了通知老板添加肉片print(老板再来一份老肉片...)con.notify()# 肉片吃光了等待肉片con.wait()# 条件变量condition 线程释放锁con.release()def thread_producer():# 条件变量condition 线程上锁con.acquire()# 全局变量声明关键字 globalglobal meat_num# 肉片熟了可以开始吃了meat_num 10print(肉片熟了可以开始吃了...)con.notify()while True:# 阻塞函数,等待肉片吃完的通知con.wait()meat_num 10# 添加肉片完成可以继续开吃print(添加肉片成功当前肉片数量%d%meat_num)time.sleep(1)con.notify()con.release()if __name__ __main__:# 创建并初始化线程t1 threading.Thread(targetthread_producer)t2 threading.Thread(targetthread_consumers)# 启动线程 -- 注意线程启动顺序启动顺序很重要t2.start()t1.start()# 阻塞主线程等待子线程结束t1.join()t2.join()print(程序结束)输出结果肉片熟了可以开始吃了... 我来一块肉片... 剩余肉片数量9 我来一块肉片... 剩余肉片数量8 我来一块肉片... 剩余肉片数量7 我来一块肉片... 剩余肉片数量6 我来一块肉片... 剩余肉片数量5 我来一块肉片... 剩余肉片数量4 我来一块肉片... 剩余肉片数量3 我来一块肉片... 剩余肉片数量2 我来一块肉片... 剩余肉片数量1 我来一块肉片... 剩余肉片数量0 老板再来一份老肉片... 添加肉片成功当前肉片数量10 我来一块肉片... 剩余肉片数量9 我来一块肉片... 剩余肉片数量8 我来一块肉片... 剩余肉片数量7 .............注意:1.全局变量要声明关键字 global2.注意线程的启动顺序这个很重要四.重点总结注意线程互斥锁Lock/线程事件Event/线程条件变量Condition三者的区别场景不同使用方式也不同前两者一般可以作为简单的线程交互线程条件变量Condition可以用于比较复杂的线程交互猜你喜欢:1.python线程创建和参数传递2.python线程互斥锁Lock3.python线程事件Event4.python return逻辑判断表达式转载请注明猿说Python » python条件变量Condition想了解更多python内容请直接搜索微信公众号猿说pythonPython教程 - 猿说Python​www.shuopython.com本人也还在学习python中博客会持续更新ing有兴趣的小伙伴关注走一波推荐浏览个人博客网站猿说python文章采用树状分类结构目录清晰一点文章内容有问题的话欢迎给出建议或者直接留言.
http://www.zqtcl.cn/news/345998/

相关文章:

  • 北京社保网站减员怎么做phpcms v9 实现网站搜索
  • 视频运营管理网站济南网站建设 济南货梯
  • html电影网站模板下载工具阿里云网站建设 部署与发布笔记
  • 建设跨境网站微信seo是什么意思
  • 我做彩票网站开发彩票网站搭建织梦如何仿手机网站源码下载
  • 东仓建设网站手机便宜的网站建设
  • 吕梁市住房与城乡建设厅网站wordpress 乐趣公园
  • 沈阳正规制作网站公司吗德成建设集团有限公司网站
  • 做网站标准步骤大学两学一做专题网站
  • 如何在手机上做网站Windows怎么建设网站
  • 专门做稀有产品的网站海口网站制作设计
  • 怎么查看自己的网站是否被百度收录网站的设计制作流程
  • 视觉设计网站芜湖做网站找哪家好
  • flash网站源码带asp后台电子商务有限公司网站
  • 一个网站有多少网页简单的logo设计
  • 重庆专业网站营销长春建站免费模板
  • 企业建设网站多少钱爱的网站歌曲
  • 宁波网站优化如何欣宝儿在什么网站做直播
  • 东营网签查询系统官方网站超炫的网站模板
  • 请人做网站谁来维护南宁营销型网站设计
  • 汕头做网站的公司西安建筑科技大学华清学院教务网
  • 免费行情网站在线石家庄正规制作网站公司
  • 站长工具网凡科网商城
  • 网站开发工程师需要会写什么区别沈阳网站建设建设公司哪家好
  • 营销型网站建设的优缺点利用海康威视做直播网站
  • 阿里手机网站开发框架怎么看网站被降权
  • 电视台做网站还是APP网络推广是什么意思
  • 浙江鼎兴建设有限公司网站wordpress看不到安装的主题
  • 琪觅公司网站开发c语言开发环境
  • 在哪个网站上做实验仪器比较好信息服务平台有哪些