假设我有以下代码:
from my_module import MyTask
import asyncio
async def main():
async def controll(fsuspend):
await asyncio.sleep(2)
resume = await fsuspend()
await asyncio.sleep(2)
await resume()
run, suspend, cancel = MyTask()
await run
print('Test')
await control(suspend)
asyncio.run(main())
- 在函数等待完成之前,函数代码
control不会运行run? - 如何检查该函数是否
suspend在异步上下文中工作? - 需要使用线程同时运行
run两者?control - 在这种情况下,函数会
print向控制台打印一条消息吗? - 该函数会在运行结束前
print打印一条消息吗?
每个
await块在当前异步函数中执行,直到预期的对象完成(但允许其他异步对象在此期间执行)。要并行等待多个对象,您不需要线程,同时等待它们就足够了,包装
asyncio.wait(或者asyncio.gather如果您需要将结果收集在列表中则使用)。在你的情况下,它会是这样的
基于此:
await. 简单地“调用”带括号但不带括号的异步函数await(例如,不将其传递给其他函数等待)实际上不会让函数执行。asyncio.wait按照我上面写的使用。run它永远结束run