# -*- coding: utf-8 -*-
"""
多进程同步  使用信号量  multiprocessing.Semaphore逻辑:启动5个进程,打印,每个各自睡眠2秒竞争2个锁大小的信号量,任何时候只有2个进程在执行打印总结:1、通过信号 实现了Pool的效果,任何时候最多只有2个进程在执行指定代码段2、相当于创建了锁的数组,一次创建多把锁,绑定同一个名字3、与RLock 有细微区别RLock  同一个进程可以锁多次Semaphore 多个不同进程可以同时各种获取锁使用:1、创建信号量  s = multiprocessing.Semaphore(2)  锁的个数2、当做参数传给子进程3、s.acquire() 锁定代码  a.release()参考:get_value() 返回信号量中还剩下多少把空闲锁
"""
import multiprocessing
import time# 子进程代码
def worker(s):s.acquire() # 竞争锁print(time.strftime('%M:%S', time.localtime(time.time())), multiprocessing.current_process().name + "acquire");time.sleep(2)print(time.strftime('%M:%S', time.localtime(time.time())), multiprocessing.current_process().name + "release");s.release() # 释放锁if __name__ == "__main__":# 创建有2个锁的信号量s = multiprocessing.Semaphore(2)# 启动5个进程,实际进程1不一定比进程2先执行for i in range(5):p = multiprocessing.Process(target=worker, args=(s,))p.start()time.sleep(15)"""
Out:('08:47', 'Process-2acquire')
('08:47', 'Process-4acquire')
('08:49', 'Process-2release')
('08:49', 'Process-3acquire')
('08:49', 'Process-4release')
('08:49', 'Process-1acquire')
('08:51', 'Process-3release')
('08:51', 'Process-5acquire')
('08:51', 'Process-1release')
('08:53', 'Process-5release')解读:47秒  有2个进程同时 执行
49秒  旧的2个进程完毕,新的2个进程开始了
"""

转载于:https://www.cnblogs.com/sunzebo/p/9637798.html

python 归纳 (二五)_多进程数据共享和同步_信号量Semaphore相关推荐

  1. python多进程存储数据_[b0035] python 归纳 (二十)_多进程数据共享和同步_共享内存Value Array...

    1. Code #-*- coding: utf-8 -*- """多进程 数据共享 共享变量 Value,Array 逻辑: 2个进程,对同一份数据,一个做加法,一个做 ...

  2. python多进程内存共享_python 归纳 (二十)_多进程数据共享和同步_共享内存Value Array...

    # -*- coding: utf-8 -*- """ 多进程 数据共享 共享变量 Value,Array 逻辑: 2个进程,对同一份数据,一个做加法,一个做加法,各做1 ...

  3. python 归纳 (二二)_多进程数据共享和同步_管道Pipe

    # -*- coding: utf-8 -*- """ 多进程数据共享 管道Pipe逻辑:2个进程,各自发送数据到管道,对方从管道中取到数据总结:1.只适合两个进程2.r ...

  4. python 线程 的类库_python类库32[多线程同步Lock+RLock+Semaphore+Event]

    多线程基础:python类库32[多线程同步] 一 多线程同步 由于CPython的python解释器在单线程模式下执行,所以导致python的多线程在很多的时候并不能很好地发挥多核cpu的资源.大部 ...

  5. 【python】详解multiprocessing多进程-Pool进程池模块(二)

    [python]详解multiprocessing多进程-process模块(一) [python]详解multiprocessing多进程-Pool进程池模块(二) [python]详解multip ...

  6. python实操训练300题_如何练习python?有这五个游戏,实操经验就已经够了

    原标题:如何练习python?有这五个游戏,实操经验就已经够了 现在学习python的人越来越多了,但仅仅只是学习理论怎么够呢,如何练习python?已经是python初学者比较要学会的技巧了! 其实 ...

  7. python低通滤波器_[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波

    [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波 发布时间:2019-04-28 20:35, 浏览次数:2739 , 标签: Python 该系列文章是讲解Python OpenCV ...

  8. python灰度图片格式_[Python图像处理] 十五.图像的灰度线性变换

    [Python图像处理] 十五.图像的灰度线性变换 发布时间:2019-03-28 00:08, 浏览次数:619 , 标签: Python 该系列文章是讲解Python OpenCV图像处理知识,前 ...

  9. python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

最新文章

  1. 【BZOJ4259】残缺的字符串
  2. 画世界怎么用光影_【干货】详解光影的魅力及其绘画技巧,一起打造极致炫丽的光影世界吧!...
  3. leetcode算法题--K 次串联后最大子数组之和★
  4. 学生选课管理系统c语言程序报告,c语言课程设计学生选课管理系统实验报告.doc...
  5. jvm:类加载器与双亲委派模型
  6. 网易云信携手SNH48 GROUP,打造在线追星新体验
  7. 大学考试计算机基础应用试题及答案,大学计算机基础考试试题及答案
  8. 特斯拉副总裁陶琳:在中国采集的数据都将存在中国
  9. 吴恩达机器学习 6.神经网络学习
  10. 1026. 节点与其祖先之间的最大差值
  11. BZOJ2832[AHOI2012] 信号塔
  12. 基于STM32单片机设计指纹考勤机+上位机管理
  13. 深入浅出mysql csdn_《深入浅出MySQL:数据库开发、优化与管理维护
  14. 大数据平台层级架构图
  15. 关于无线充电的三大标准和四种实现方式的介绍
  16. RedHat 8 dnf源配置
  17. 【Kotlin】by lazy关键字的实现原理
  18. 如何获取微信公众号的关注链接?
  19. APP (UniAPP) 微信支付回调的 HTTP_RAW_POST_DATA 报错情况 (wxpayv3)
  20. html文字段落设置,css中怎么设置段落样式?

热门文章

  1. ASP.NET 服务器部署IIS程序池进程标示配置要和SQL SERVER一致,否则不能拽出数据
  2. ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)
  3. .NET开发 程序员必备工具 -- Regulator:生成正则表达式工具
  4. 【opencv学习】【图像金字塔】
  5. 漫步最优化三——优化算法的一般结构
  6. 【计算机网络】—— 差错控制(检错编码)
  7. 去哪儿-08-city-search
  8. LeNet-5——CNN经典网络模型详解(pytorch实现)
  9. 设计模式学习笔记——责任链(Chain of Responsibility)模式
  10. 蔡高厅老师 - 高等数学阅读笔记 - 07 - 函数的微分 - 微分中值定理 罗尔、拉格朗日中值定理 (31、32、33、34、35)