目录
入门
'''
1.event_loop: 时间循环,相当于一个无限循环,可以把一些函数注册到这个时间循环上,当满足发生条件
的时候,就调用相应的处理方法
2.coroutine: 协程对象类型,可以使用async 关键字来定义一个方法,这个方法在调用时不会立即被执行,而是会返回一个协程对象
我们可以将协程对象注册到事件循环中,它会被事件循环调用,
3.task: 任务,这是协程对象的进一步封装,包含协程对象的各个状态
'''
# 定义一个协成对象
async def execute(x):
print(f'Number:{x}')
coroutine = execute(1)
print(coroutine)
loop = asyncio.get_event_loop()
task = loop.create_task(coroutine)
print(task)
loop.run_until_complete(task)
print(task)
# out:
'''
<coroutine object execute at 0x000001C1361B3140>
<Task pending name='Task-1' coro=<execute() running at E:\PyProject\asyncioDemo\main.py:31>>
Number:1
<Task finished name='Task-1' coro=<execute() done, defined at E:\PyProject\asyncioDemo\main.py:31> result=None>
'''
# 也可以直接使用 :asyncio.ensure_future(coroutine) 创建task
async def execute(x):
print(f'Number:{x}')
coroutine = execute(1)
task = asyncio.ensure_future(coroutine)
loop = asyncio.get_event_loop()
print(task)
loop.run_until_complete(task)
print(task)
绑定回调函数
async def request():
url = 'http://www.baidu.com'
status = requests.get(url)
return status
def callback(task): # 回调函数
print(f'Status:{task.result()}')
coroutine = request()
task = asyncio.ensure_future(coroutine)
task.add_done_callback(callback)
print(task)
loop = asyncio.get_event_loop()
loop.run_until_complete(task) # 将协程对象注册到事件,并启动
print(task)
标签:task,协程,coroutine,Python,print,loop,asyncio
From: https://www.cnblogs.com/czzz/p/16908534.html