[1]中的代码如下:

import asyncioasync def do_work(semaphore):# new: only enter if semaphore can be acquiredasync with semaphore:print('start work')# optionally do a lot of work that will consume memoryawait asyncio.sleep(1)print('end work')async def main():tasks = []# new: instantiate a semaphore before calling our coroutinessemaphore = asyncio.BoundedSemaphore(10)for i in range(100):# new: pass the semaphore to the coroutine that will limit# itselftasks.append(asyncio.ensure_future(do_work(semaphore)))await asyncio.gather(*tasks)if __name__ == '__main__':loop = asyncio.get_event_loop()loop.set_debug(True)loop.run_until_complete(main())

这里为什么要设置两次呢?

100和10,

意思是任务有100个,同一时间有效的只有10个,限制对系统资源的使用.

[3]的代码和[1]类似

Reference:

[1]How do you limit memory usage with asyncio?

[2]python异步编程之asyncio(百万并发)

[3]Execute coroutines in pool

semaphore的使用相关推荐

  1. Java并发编程之CountDownLatch、CyclicBarrier和Semaphore

    前言 本文为对CountDownLatch.CyclicBarrier.Semaphore的整理使用 CountDownLatch CountDownLatch类位于java.util.concurr ...

  2. java 多线程 信号_Java多线程——Semaphore信号灯

    Semaphore [ˈseməfɔːr]可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数(即允许n个任务同时访问这个资源),例如,实现一个文件允 ...

  3. linux内核 semaphore,2.4内核里semaphore源码的一个疑问

    博主你好, 请教一个问题. __down()里面有一段代码,  我觉得不那么保险.我先把__down的源码贴出来: ========================================== ...

  4. JAVA中的并发工具 -- CountDownLatch、CyclicBarrier、Semaphore

    2019独角兽企业重金招聘Python工程师标准>>> CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作. CountDownLatc ...

  5. 信号量Semaphore一篇文章叫你明白

    已经习惯了阿里面试官的冷笑:用过Semaphore吧,不妨说说? 本质就是 信号量模型,模型图如下: 其中的 计数器 和 等待队列 对外部是透明的,仅能通过提供的三大方法访问它们. 详细说说哪三大方法 ...

  6. 别再和面试官说不懂信号量Semaphore了!

    已经习惯了阿里面试官的冷笑:用过Semaphore吧,不妨说说? 本质就是 信号量模型,模型图如下: 其中的 计数器 和 等待队列 对外部是透明的,仅能通过提供的三大方法访问它们. 详细说说哪三大方法 ...

  7. 15.并发工具类(解析hashtable,ConcurrentHashMap1.7与1.8的区别以及Semaphore)

    3. 并发工具类 3.1 并发工具类-Hashtable Hashtable出现的原因:在集合类中HashMap是比较常用的集合对象,但是HashMap在多线程环境下可能会出现线程不安全的情况,为了保 ...

  8. LeetCode 1115. Print FooBar Alternately--多线程并发问题--Java解法--CyclicBarrier, synchronized, Semaphore 信号量

    此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 题目地址:Print FooB ...

  9. Semaphore(信号量)

    Semaphore是什么 Semaphore通常我们叫它信号量,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源. 使用场景 通常用于哪些资源有明确访问数量限制的场景,常 ...

  10. Redisson 分布式锁源码 11:Semaphore 和 CountDownLatch

    前言 Redisson 除了提供了分布式锁之外,还额外提供了同步组件,Semaphore 和 CountDownLatch. Semaphore 意思就是在分布式场景下,只有 3 个凭证,也就意味着同 ...

最新文章

  1. AI虚拟偶像:知识图谱赋予AI“生命感”
  2. 实践,用tornado实现自定义协议server
  3. 压缩感知的阶段性总结
  4. 编程软件python怎样开始学-Python 3.7从零开始学
  5. $NF和 NF的区别
  6. 无软件linux,无需安装即可运行或演示Linux的方法 (1)
  7. public private protected
  8. linux脚本判断流程控制,Shell 脚本-6- 流程控制之判断分支
  9. 利用jQuery和bootstrap更改radio样式
  10. mvc ajax提交html标签,Mvc提交表单的四种方法全程详解
  11. 【ASP.Net MVC】AspNet Mvc一些总结
  12. DAY16-Django之model
  13. 拓端tecdat|R语言Bootstrap的岭回归和自适应LASSO回归可视化
  14. U盘启动盘cmd制作
  15. 华为手机热点无法连接_华为P7手机WLAN热点连接失败解决方法介绍
  16. 在JavaScript中使用Octet Streams
  17. 华为手机adb connect连接失败解决方案(转)
  18. android11用石墨文档,轻协作 | 石墨文档 for Android 版轻体验
  19. 如何使用Tableau进行预测分析
  20. windows 中开机自启动命令行(CLI)

热门文章

  1. 关于PHP数组方法array_walk的疑问
  2. [转载] 在网页中拖放和停靠div的例子
  3. 2009年网页设计10大趋势
  4. 外部引用CSS中 link与@import的区别
  5. java 数据库插入数据_java向数据库插入N条数据
  6. Github用户注册流程
  7. css3双击点赞动画,Twitter上的点赞动画
  8. 留言板JavaScript实现
  9. 关于生活与工作的一些反思
  10. 原生JS基于window.scrollTo()封装垂直滚动动画工具函数