Semaphore 在内部管理着一个计数器。调用 acquire() 会使这个计数器 -1,release() 则是 +1.计数器的值永远不会小于 0,当计数器到 0 时,再调用 acquire() 就会阻塞,直到其他线程来调用 release()

import time
import threadings1=threading.Semaphore(5)  #添加一个计数器def foo():s1.acquire()  #计数器获得锁time.sleep(2)    #程序休眠2秒print("ok",time.ctime())s1.release()   #计数器释放锁for i in range(20):t1=threading.Thread(target=foo,args=())    #创建线程t1.start() #启动线程

参考:
https://www.cnblogs.com/renpingsheng/p/7202818.html
https://my.oschina.net/lionets/blog/194577

python threading.Semaphore相关推荐

  1. Python Threading Semaphore信号量(子线程的数量)

    原因:主要用在保护有限的资源. 假设当前数据库支持最大连接数为3,将信号量初始值设为3,那么同时最大可以有三个线程连接数据库,其他线程若再想连接数据库,则只有等待,直到某一个线程释放数据库连接. 注意 ...

  2. [Python 多线程] Semaphore、BounedeSemaphore (十二)

    Semaphore 信号量,信号量对象内部维护一个倒计数器,每一次acquire都会减1,当acquire方法发现计数为0就阻塞请求的线程,直到其它线程对信号量release后,计数大于0,恢复阻塞的 ...

  3. Python Threading 多线程编程

    写在篇前   threading模块是python多线程处理包,使用该模块可以很方便的实现多线程处理任务,本篇文章的基础是需要掌握进程.线程基本概念,对PV原语.锁等传统同步处理方法有一定的了解.另外 ...

  4. Python学习笔记- Python threading模块

    Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import timede ...

  5. 一文搞懂python threading(多线程)模块

    命令提示符如何打开并运行python文件链接 一. 1.active_count() , activeConut() 方法 功能 active_count() , activeConut() 返回处于 ...

  6. python threading模块的方法_Python THREADING模块中的JOIN()方法深入理解

    看了oschina上的两个代码,受益匪浅.其中对join()方法不理解,看python官网文档的介绍: join([timeout]):等待直到进程结束.这将阻塞正在调用的线程,直到被调用join() ...

  7. Python threading Thread多线程的使用方法

    Python threading Thread多线程的使用方法 参考资料:<Python 多线程>http://www.runoob.com/python/python-multithre ...

  8. python threading 结束线程

    python threading 启动的线程,并没有提供终止线程的方法,现总结一下在网上找到的方法 1.通过threading.Thread._Thread__stop()结束线程 import ti ...

  9. python 信号量 semaphore

    信号量 信号量(英语:semaphore)又称为信号标, 是一个同步对象,用于保持在0至指定最大值之间的一个计数值. 当线程完成一次对该semaphore对象的等待(wait)时,该计数值减一: 当线 ...

最新文章

  1. 如何将VMware ubuntu虚拟机磁盘增长改成自分配(未成功)
  2. 最优布线问题(克鲁斯卡尔)
  3. socket通信的环形缓冲
  4. gps test free android,GPSTest | F-Droid - Free and Open Source Android App Repository
  5. mysql 主键互换_MySQL-什么方法可以快速的交换两条记录的ID?
  6. 软件测试入门笔记(一)
  7. Atitit maven 编译与资源文件与web目录自定义配置 与eclipse的集成与war包打包 1.1. 配置webapp目录 plugin设置 webappDirectory 1 1.2.
  8. gre词汇精选最新版
  9. 多组两两比较用什么检验方法_方差分析中两两多重比较方法的含义及如何正确选择...
  10. 详解内存SDRAM原理(P-Bank、L-Bank、刷新、预充电等)
  11. linux解压rar文件出错,Linux下安装rar解压缩文件的方法和所遇到的问题解决方法...
  12. 米兔机器人恐龙拼图手册_MI 小米 米兔积木机器人 履带版
  13. C指针之指针与数组的天生姻缘
  14. 懒惰使人沉睡;懈怠的人必受饥饿。
  15. sharepoint能做什么,门户开发出来是什么效果,这里转一个个人产品的案例
  16. js等待异步执行完再执行,js如何让代码同步执行
  17. discuz点击会员名字默认进入个人空间首页
  18. CNN分类中批量读取数据及制作标签时报错:could not broadcast input array from shape (128,128,3) into shape (128,128)
  19. 白社会“钻戒门”风波乍起 小情侣虚惊一场终归和美
  20. 百度有道雅虎的实习面试经历

热门文章

  1. 49 - 算法 - Leetcode 112 路径总和 -二叉树递归 带参数一起递归
  2. C语言经典迭代算法之求解函数定积分(详解)
  3. Python把列表中的数字尽量等分成n份
  4. wamp安装和配置_手动配置Wordpress环境真香,让我毫不犹豫卸载LAMP和WAMP环境
  5. PAT-甲级之树遍历问题的总结
  6. Linux关闭java命令,Linux系统关闭或重新启动主机的命令详解
  7. php eureka客户端,Spring Cloud(一)配置Eureka 服务器(示例代码)
  8. php memcached 例子,php下Memcached入门实例解析
  9. linux打开mysql某张表_Linux——MySQL多表连接
  10. python中的方法什么意思_python中的函数和方法的区别是什么