python -asyncio
生活随笔
收集整理的這篇文章主要介紹了
python -asyncio
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、關于協程:什么是協程
2、python協程如何使用:asyncio?--- 異步 I/O
3、關于python并發大量協程時報錯ValueError: too many file descriptors in select()
假如你的并發達到2000個,程序會報錯:ValueError: too many file descriptors in select()。報錯的原因字面上看是 Python 調取的 select 對打開的文件有最大數量的限制,這個其實是操作系統的限制,linux打開文件的最大數默認是1024,windows默認是509,超過了這個值,程序就開始報錯。這里我們有三種方法解決這個問題:
不修改系統默認配置的話,個人推薦限制并發數的方法,設置并發數為500,處理速度更快。
#coding:utf-8 import time,asyncio,aiohttpurl = 'https://www.baidu.com/' async def hello(url,semaphore):async with semaphore:async with aiohttp.ClientSession() as session:async with session.get(url) as response:return await response.read()async def run():semaphore = asyncio.Semaphore(500) # 限制并發量為500to_get = [hello(url.format(),semaphore) for _ in range(1000)] #總共1000任務await asyncio.wait(to_get)if __name__ == '__main__': # now=lambda :time.time()loop = asyncio.get_event_loop()loop.run_until_complete(run())loop.close()?
總結
以上是生活随笔為你收集整理的python -asyncio的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ—流控机制
- 下一篇: 什么是协程