semaphore的使用
生活随笔
收集整理的這篇文章主要介紹了
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的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cython屏蔽GIL锁实践
- 下一篇: Yy评级(2021yy全业务排名表)