python - 使用 asyncio 的简单非阻塞无限循环

标签 python python-3.x

我正在尝试创建一个非阻塞 while 循环,但我的代码是阻塞的(“Next!”不会被打印)。我很感激任何帮助或提示。谢谢。

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()

最佳答案

run_until_complete() 就会这样做,它会等待协程完成然后再继续,你必须一次一步地调用该函数才能使其成为一个实际的协程,但是如果你没有主循环来调用running_loop,那么你不妨只使用线程

关于python - 使用 asyncio 的简单非阻塞无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810358/

相关文章:

python - 使用 Pandas 计算增量列

python - 使用 PyObjC 和 Core Data 操作表值

python - 是否可以在 python 一个线性三元条件运算符中放置中断

python - PyTorch 运行时错误 : DataLoader worker (pid(s) 15332) exited unexpectedly

python - 将 new.module() 移植到 Python3

python - 为什么我无法向 attrs 对象添加属性?

python - Python [Errno 13]-保存用户打开的文件时的异常处理

python - 编译时全局应用 extern C

python - 具有多个变量名称和多个值名称的融化 Pandas 数据框

python - Crypto.Signature.PKCS1_v1_5 和 Crypto.Signature.pkcs1_15 有什么区别?