如何在asyncio关闭之前“暂停”脚本

时间:2017-06-24 23:04:27

标签: python python-3.x python-asyncio

我有一个函数调用一个类,在类被启动后它将继续向下运行,就像它应该的那样。但是我想在课程被启动之后暂停,直到从课堂内关闭asyncio。

这样的事情:

from PyHook3 import HookManager
import asyncio


class Keystroke_Watcher(object):
    def __init__(self, event_loop):
        self.event_loop = event_loop

        self.hm = HookManager()
        self.hm.KeyDown = self.on_keyboard_event
        self.hm.HookKeyboard()


    def on_keyboard_event(self, event):
        if event.KeyID == 65:  # A
            self.shutdown()
        return True

    def shutdown(self):
        self.hm.UnhookKeyboard()
        self.event_loop.stop()

if __name__ == '__main__':
    loop = asyncio.get_event_loop()

    watcher = Keystroke_Watcher(loop)
    loop.run_forever()
    print("Done!")

这个想法是“主”代码在按下“A”键之前不应该继续。但是,使用此当前代码,它将冻结所有键盘操作,即使按下A后它也不会停止。

我使用了错误的asyncio循环吗?

它不适用于课程吗?

这个问题的最佳解决方案是什么? (不一定要将asyncio纳入解决方案)

注意:我知道Qt确实有这样做,但我不想包含整个qt库。 QEventLoop()。exec()启动它,QEventLoop()。exit()结束它。

0 个答案:

没有答案