一、信号量
设置在多线程中,并行运行的线程个数
我们都知道在加锁的情况下,程序就变成了串行,也就是单线程,而有时,我们在不用考虑数据安全时(不修改数据),不用加锁,程序就变成了并行,也就是多线程。为了避免业务开启过多的线程时。我们就可以通过信号量,(Semaphore)来设置指定个数的线程。举个简单例子:车站有3个安检口,那么同时只能有3个人安检,别人来了,只能等着别人安检完才可以过。

二、代码
semapshore = threading.BoundedSemaphore(3) :一次只允许3个人同时过安检
semapshore.acquire():获取锁
semapshore.release():释放锁

import threading
import os, time# 一次只允许3个人同时过安检
semapshore = threading.BoundedSemaphore(3)def run(num):semapshore.acquire()  # 获得信号量的锁print(f'第{num}个人正在过安检')time.sleep(2)semapshore.release()  # 释放这把锁if __name__ == '__main__':# 创建子线程thread = []for i in range(100):t = threading.Thread(target=run, args=(i,))t.start()thread.append(t)for t in thread:t.join()print('主线程执行完毕')

python—多线程之信号量相关推荐

  1. Python | threading04 - 使用信号量,实现线程间同步

    文章目录 一.前言 二.生产者-消费者模型 2.1.代码 2.2.运行的结果 2.3.Semaphore没有设置上限值 一.前言 先说一下信号量与互斥量之间的关系.信号量的一个特殊的应用是互斥锁(互斥 ...

  2. python爬虫(多线程锁信号量)

    1.多线程(无锁):threading.Thread(target = ***).start() 1 import threading2 import time3 import random4 5 d ...

  3. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

  4. python 多线程编程之_thread模块

    python 多线程编程之_thread模块 参考书籍:python核心编程 _thread模块除了可以派生线程外,还提供了基本的同步数据结构,又称为锁对象(lock object,也叫原语锁.简单锁 ...

  5. python 多线程和协程结合_一文讲透 “进程、线程、协程”

    本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程 ...

  6. python 线程等待_详解python多线程之间的同步(一)

    引言: 线程之间经常需要协同工作,通过某种技术,让一个线程访问某些数据时,其它线程不能访问这些数据,直到该线程完成对数据的操作.这些技术包括临界区(Critical Section),互斥量(Mute ...

  7. python多线程和多进程的使用_python多线程与多进程

    python多线程与多进程 python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来 ...

  8. python多线程_【python多线程02】各种线程锁

    0x00 前言 本片文章讲述了小明同学在编写python多线程过程中遇到一些奇怪现象,小明根据这些奇怪现象挖掘背后的原因...通过遇到的问题,引申出全局解释器锁,同步锁,递归锁,信号量... 0x01 ...

  9. python多线程输出_Python多线程

    多线程基础概念 并行与并发 并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段 线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允 ...

最新文章

  1. mysql8 mac 忘记密码_mac下 MySql 8.0.15忘记密码重置密码
  2. 好骚气的树状数组的解释
  3. Android View体系(十)自定义组合控件
  4. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!...
  5. asp.net运行机制
  6. Python 让所有奇数都在偶数前面,而且奇数升序排列,偶数降序排序
  7. LeetCode—210. 课程表 II
  8. jzoj3890-长途旅行【同余最短路】
  9. 为什么“鸿蒙”不是第二个“安卓”,如何看待Harmony OS里的Android痕迹?
  10. 笔记本电脑怎么清理灰尘_手机声音越用越小怎么办?一段黑科技音波就能清理扬声器灰尘...
  11. sap abap开发从入门到精通_SAP顾问≠程序员
  12. 快递物流配货发货系统学习--以京东物流为例
  13. 算法分析与设计-----前缀和 差分
  14. mysql error 1148_MYSQL:ERROR 1148: The used command is not allowed with this MySQL version
  15. 微信小游戏加载图片失败问题
  16. 待到凤凰花开季,惟愿前程皆似锦
  17. 简述计算机主板的主要品牌,(品牌管理)计算机主板品牌介绍(9页)-原创力文档...
  18. 生产作业指导书怎么写?企业如何编制生产作业指导书?
  19. 违反唯一约束条件oracle,oracle imp遇到违反唯一约束条件 (GZW.SYS_C006112)
  20. 推荐3个生活工具类的小程序,非常实用哦!

热门文章

  1. html怎么设置图片倾斜度,CSS3-css如何使图片倾斜45度显示
  2. java 更新ui_你怎么解决Android开发中更新UI报错的异常吗-百度经验
  3. android5.0以后获取应用运行状态,Android判断App前台运行还是后台运行(运行状态)...
  4. 数据中心的未来:一体化无人值守
  5. ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量
  6. Graphviz:可视化工具Graphviz的简介、安装、使用方法、经典案例之详细攻略
  7. 2、cookie session token详解
  8. 原生js获取css样式
  9. multiprocessing创建自定义进程类
  10. 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead: