在学习了Event和Condition两个线程同步工具之后还有一个我认为比较鸡肋的工具 semaphores

1. 使用semaphores的使用效果和Condition的notify方法的效果基本相同。每次只能通知一个阻塞线程继续运行

2. 信号量同步基于内部计数器,每调用一次acquire(),计数器减1;每调用一次release(),计数器加1.当计数器为0时,acquire()调用被阻塞

 1 import threading
 2 import time
 3
 4 def countdown(n, sema):
 5     while n > 0:
 6         n -= 1
 7         sema.acquire()
 8         print('current countdown:',n)
 9
10
11 def countup(n, sema):
12     while n < 100:
13         n += 1
14         sema.acquire()
15         print('current countup:',n)
16
17 sema = threading.Semaphore()
18 threading.Thread(target=countdown,args=(100, sema)).start()
19 threading.Thread(target=countup,args=(0, sema)).start()
20 for i in range(100):
21     sema.release()
22     time.sleep(3)

转载于:https://www.cnblogs.com/someoneHan/p/6218040.html

python 线程之threading(五)相关推荐

  1. Python3——多线程之threading模块

    Python3--多线程之threading模块 目录 Python3--多线程之threading模块 Threading模块的对象 Threading模块的Thread类 queue模块(线程间通 ...

  2. python多线程之threading

    一.创建线程的方法 1.用 thread.Thread 直接在线程中运行函数 import threading def threadfun(x,y): #线程任务函数 threadfun() for ...

  3. linux 线程pthread_detach,linux线程之pthread_join和pthread_detach

    在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死.在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的.相反 ...

  4. Python多线程之gevent

    python多线程之gevent 因为python线程的性能问题,在python中使用多线程运行代码经常不能达到预期的效果.而有些时候我们的逻辑中又需要开更高的并发,或者简单的说,就是让我们的代码跑的 ...

  5. Python并发编程之threading模块

    Python并发编程之threading模块 threading 模块 1. Timer对象 2. Lock对象 3. RLock 4. 信号量和有边界的信号量 5. 事件 6. 条件变量 7. 使用 ...

  6. 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool

    [索引页] [源码下载] 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool 作者:webabcd 介绍 S ...

  7. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

  8. 线上学python哪家好-Python线下培训好还是线上培训好

    原标题:Python线下培训好还是线上培训好 五年前培训的话,只要培训出来就有工作,因为那个时候国家缺少这个岗位,大肆宣传.所以那个时候是批量生产,培训学点,到公司有人带. 但是现在不缺人,缺的是人才 ...

  9. python线下培训-Python培训是应该选择线上还是线下呢?

    前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取! 想学习Python的朋友一定都 ...

最新文章

  1. mysql的联合索引_mysql联合索引
  2. MySQL 数据库sql语句用关键字作为where条件进行筛选实例演示,mysql建表、查询字段为关键字解决方法
  3. 清原高中2021高考成绩查询,2021年抚顺高考状元是谁分数多少分,历年抚顺高考状元名单...
  4. 死锁问题案例分析解决
  5. IBM 的大型机 z Systems 引入 Go 语言
  6. Cell子刊主编:文章被编辑拒稿,主要是这4大原因
  7. 打开链接跳转浏览器代码
  8. 一对一直播社交聊天程序: JAVA中的Socket源码概述
  9. A+B in Hogwarts (20)
  10. Matlab之数据处理
  11. java sleep()和wait()的区别
  12. Atitit 工作流之道 艾提拉著 BPM,即业务流程管理 目录 1. 流程入门 思想 历史 分类 1 第二篇 第2章 初识工作流 2 1.1. 2.3 工作流技术相关规范  2.3.1 W
  13. 排序(使用插入法对数组元素从小到大排序)
  14. iOS对接Facebook:登录,分享,邀请,游戏排行榜功能
  15. Unity常用模块_公共Mono类
  16. 2020年程序员技能展望:平均年薪5.4万美元,JavaScript与Python最受欢迎
  17. MATLAB自动驾驶工具箱——卡尔曼运动跟踪示例解读
  18. linux 下nm命令输出,使用awk解析nm命令的输出 - Linux Bash
  19. 2022年高压电工模拟考试及高压电工作业模拟考试
  20. Rh-RCA I,RCA120;罗丹明标记蓖麻凝集素I(RCA I,RCA120)

热门文章

  1. pcb入门之新建工程
  2. hdu A Simple Math Problem
  3. [YTU]_2642 (填空题:类模板---求数组的最大值)
  4. 计算机视觉领域的一些牛人博客,研究机构等的网站链接
  5. 2019年财政收支分析_2019年CPI走势预测与分析
  6. 用OneR算法对Iris植物数据进行分类
  7. 3.1.2 单一数字评估指标以及多个不同评估指标
  8. 管与c++中容量的重新分配问题
  9. 单片机课程设计电梯(c语言),单片机课程设计之电梯控制系统.docx
  10. 树莓派+驱动器 控制57步进电机运动