2.asyncio快速上手
2024-10-21 04:04:45
事件循环:可以理解成一个死循环,去检测并执行某些代码
import asyncio
# 去生成或者获取一个事件循环
loop = asyncio.get_event_loop()
# 将任务放到事件循环
loop.run_until_complete(协程对象)
协程函数:定义函数的时候使用 async def 函数名()定义函数
async def test():
...
协程对象:执行协程函数()得到的写成对象
async def test():
...
result = func()
#注意:创建协程对象,函数内部代码并不会执行
执行协程对象:将协程对象加入的事件循环任务列表执行
result = test()
loop = asyncio.get_event_loop()
loop.run_until_complete(result) #把协程对象当成任务添加到事件循环
asyncio.run()
asyncio.run(result)
# Python3.7之后可以使用asyncio.run()方法执行
# 实际上run()内部相当于替我们创建了循环并加到任务
await等待
await+可等待对象
可等待对象:协程对象、Future对象、Task对象,->IO等待
await就是等待对象的值得到结果之后再继续往下走
#示例1
impoty asyncio
async def func():
print('test_1')
response = await asyncio.sleep(2)
return response
asyncio.run(func())
#示例2
async def others():
print('start')
await asyncio.sleep(2)
return 'others'
async def func():
print('执行协程函数内部代码')
# 遇到IO操作挂起当前协程(任务),等IO操作完成之后继续执行,当前协程挂起时,事件循环可以执行其他任务
response = await others()
print(response)
最新文章
- Eclipse 双击变量,其他相同变量有底色
- vs2013怎么打开vs2010的解决方案
- 在Mac OS X 10.8中配置Apache + PHP + MySQL
- Rails--content_for和yield
- ArcGIS Engine开发之旅01---产品组成、逻辑体系结构
- TClientDataSet中关于TField、TFieldDef动态创立字段的应用
- 【转】selenium简介及安装方法
- REST API 基于ACCESS TOKEN
- hdu_1072_Nightmare(BFS)
- [TJOI 2013]单词
- Python内置函数(39)——locals
- Go学习之初出茅庐
- iptalbes -F
- 【Nature 子刊】I型HLA基因中和癌症相关的体细胞突变--转载
- Memory leak patterns in JavaScript
- firefox因 HTTP 严格传输安全(HSTS)机制无法打开网页
- C++ new的nothrow关键字和new_handler用法
- CKEditor+SWFUpload实现功能较为强大的编辑器(一)---CKEditor配置
- C# 开发网页的打印版
- vuez init webStorm