相关攻略:Python:多进程,多线程,协程基础案例
获取协程返回值的四种方式: 1、通过ensure_future获取,本质是future对象中的result方 2、使用loop自带的create_task, 获取返回值 3、使用callback, 一旦await地方的内容运行完,就会运行callback 4、使用partial这个模块向callback函数中传入值
源码:
import asyncio
from functools import partial
async def talk(name):
print(f"talk function run.")
await asyncio.sleep(0.1)
return f"{name} talk!"
async def sleep(name):
print(f"sleep function run.")
await asyncio.sleep(0.1)
return f"{name} sleep!"
def callback(name):
print(f"主动抛出接收:{name}")
if __name__ == "__main__":
loop = asyncio.get_event_loop()
task1 = loop.create_task(talk("Dog"))
task2 = loop.create_task(talk("Cat"))
task1.add_done_callback(partial(callback))
task2.add_done_callback(partial(callback))
loop.run_until_complete(task1)
loop.run_until_complete(task2)
print(task1.result())
print(task2.result())
依次执行结果:
通过ensure_future获取,本质是future对象中的result方法 
使用loop自带的create_task, 获取返回值 
用callback, 一旦await地方的内容运行完,就会运行callback 
使用partial这个模块向callback函数中传入值 

微信公众号:玩转测试开发 欢迎关注,共同进步,谢谢!
|