semaphore的使用
[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的使用相关推荐
- Java并发编程之CountDownLatch、CyclicBarrier和Semaphore
前言 本文为对CountDownLatch.CyclicBarrier.Semaphore的整理使用 CountDownLatch CountDownLatch类位于java.util.concurr ...
- java 多线程 信号_Java多线程——Semaphore信号灯
Semaphore [ˈseməfɔːr]可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数(即允许n个任务同时访问这个资源),例如,实现一个文件允 ...
- linux内核 semaphore,2.4内核里semaphore源码的一个疑问
博主你好, 请教一个问题. __down()里面有一段代码, 我觉得不那么保险.我先把__down的源码贴出来: ========================================== ...
- JAVA中的并发工具 -- CountDownLatch、CyclicBarrier、Semaphore
2019独角兽企业重金招聘Python工程师标准>>> CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作. CountDownLatc ...
- 信号量Semaphore一篇文章叫你明白
已经习惯了阿里面试官的冷笑:用过Semaphore吧,不妨说说? 本质就是 信号量模型,模型图如下: 其中的 计数器 和 等待队列 对外部是透明的,仅能通过提供的三大方法访问它们. 详细说说哪三大方法 ...
- 别再和面试官说不懂信号量Semaphore了!
已经习惯了阿里面试官的冷笑:用过Semaphore吧,不妨说说? 本质就是 信号量模型,模型图如下: 其中的 计数器 和 等待队列 对外部是透明的,仅能通过提供的三大方法访问它们. 详细说说哪三大方法 ...
- 15.并发工具类(解析hashtable,ConcurrentHashMap1.7与1.8的区别以及Semaphore)
3. 并发工具类 3.1 并发工具类-Hashtable Hashtable出现的原因:在集合类中HashMap是比较常用的集合对象,但是HashMap在多线程环境下可能会出现线程不安全的情况,为了保 ...
- LeetCode 1115. Print FooBar Alternately--多线程并发问题--Java解法--CyclicBarrier, synchronized, Semaphore 信号量
此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 题目地址:Print FooB ...
- Semaphore(信号量)
Semaphore是什么 Semaphore通常我们叫它信号量,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源. 使用场景 通常用于哪些资源有明确访问数量限制的场景,常 ...
- Redisson 分布式锁源码 11:Semaphore 和 CountDownLatch
前言 Redisson 除了提供了分布式锁之外,还额外提供了同步组件,Semaphore 和 CountDownLatch. Semaphore 意思就是在分布式场景下,只有 3 个凭证,也就意味着同 ...
最新文章
- AI虚拟偶像:知识图谱赋予AI“生命感”
- 实践,用tornado实现自定义协议server
- 压缩感知的阶段性总结
- 编程软件python怎样开始学-Python 3.7从零开始学
- $NF和 NF的区别
- 无软件linux,无需安装即可运行或演示Linux的方法 (1)
- public private protected
- linux脚本判断流程控制,Shell 脚本-6- 流程控制之判断分支
- 利用jQuery和bootstrap更改radio样式
- mvc ajax提交html标签,Mvc提交表单的四种方法全程详解
- 【ASP.Net MVC】AspNet Mvc一些总结
- DAY16-Django之model
- 拓端tecdat|R语言Bootstrap的岭回归和自适应LASSO回归可视化
- U盘启动盘cmd制作
- 华为手机热点无法连接_华为P7手机WLAN热点连接失败解决方法介绍
- 在JavaScript中使用Octet Streams
- 华为手机adb connect连接失败解决方案(转)
- android11用石墨文档,轻协作 | 石墨文档 for Android 版轻体验
- 如何使用Tableau进行预测分析
- windows 中开机自启动命令行(CLI)