import asyncio
async def f():
await asyncio.sleep(2.5)
return "return value from f after 2.5 seconds"
def g(x):
print(x)
async def main():
##############################################
async def callback_helper(original, callback):
callback(await original())
asyncio.create_task(callback_helper(f, g))
##############################################
for i in range(1, 5):
await asyncio.sleep(1)
print(i, "seconds in main")
asyncio.run(main())
这正是我想要的:
1 seconds in main
2 seconds in main
return value from f after 2.5 seconds
3 seconds in main
4 seconds in main
我只能修改两####################
行之间的代码。我不能改变f
,g
或其余的main
。有没有更优雅的方法来做到这一点?我必须首先定义一个“回调辅助函数”,这似乎很奇怪。如何在不阻塞的情况下运行协程并将返回值传递给另一个函数?我想要做的就是调用g
完成后的返回值f
。我认为必须有一些东西asyncio
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句