python loop call soon_python – 了解asyncio已经永远运行循环和挂起的任务

问题是对loop.run_forever()的调用阻塞;它启动事件循环,直到你明确地停止循环才会返回 – 因此是run_forever的永远部分.您的程序从不显式停止事件循环,因此永远不会达到您的asyncio.async(blocking(“ls”))调用.

使用asyncio.async将新任务添加到已经运行的循环中是很好的,您只需要确保该函数实际上是从事件循环内的协同程序或回调内部调用的.这里有些例子:

安排阻止在事件循环开始后立即运行:

def main():

logging.info("in main funciton")

loop = asyncio.get_event_loop()

logging.info("new loop created")

logging.info("loop running forever")

asyncio.async(blocking("ls"))

loop.run_forever()

安排阻止事件循环执行的回调:

def start_blocking():

asyncio.async(blocking("ls"))

def main():

logging.info("in main funciton")

loop = asyncio.get_event_loop()

logging.info("new loop created")

logging.info("loop running forever")

loop.call_soon(start_blocking) # Calls start_blocking once the event loop starts

loop.run_forever()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值