【问题标题】:Simple non-blocking infinite loop using asyncio使用 asyncio 的简单非阻塞无限循环
【发布时间】:2018-06-12 06:16:43
【问题描述】:

我正在尝试创建一个非阻塞的 while 循环,但我的代码被阻塞(“下一步!”没有被打印出来)。我感谢任何帮助或提示。谢谢。

import asyncio

class TaskManager:

    def __init__(self):
        self.start_loop()

    @asyncio.coroutine
    def running_loop(self) -> None:
        while True:
            # do something async!

            yield from asyncio.sleep(1)

    def start_loop(self):
        loop = asyncio.get_event_loop()
        loop.run_until_complete(self.running_loop())
        print("Next!")

TaskManager()

【问题讨论】:

  • 循环结束后的代码不会执行,直到循环结束。

标签: python python-3.x


【解决方案1】:

run_until_complete() 会这样做,它会等待协程完成后再继续,您必须一次调用该函数才能使其成为真正的协程,但如果您没有主循环从那时起调用running_loop,您不妨使用threading

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2022-08-20
    • 2022-10-23
    相关资源
    最近更新 更多