asyncio.Event在信号处理程序中未被设置
创始人
2024-09-21 05:00:55
0

在实现信号处理程序的函数中,不能直接设置 asyncio.Event 实例的状态,必须通过调用 asyncio.ensure_future() 来执行协程,并在协程中设置 Event 的状态。以下是一个示例:

import asyncio
import signal

loop = asyncio.get_event_loop()
evt = asyncio.Event()

async def do_work():
    print("Starting work ...")
    await asyncio.sleep(3)
    print("Work finished.")
    evt.set()

async def signal_handler():
    print("Received signal, stopping tasks ...")
    task = asyncio.ensure_future(do_work())
    await evt.wait()
    task.cancel()
    print("All tasks stopped.")
    loop.stop()

async def main():
    # Register the signal handler
    loop.add_signal_handler(signal.SIGINT, lambda: asyncio.ensure_future(signal_handler()))

    # Start main work
    await asyncio.gather(do_work())

if __name__ == "__main__":
    loop.run_until_complete(main())

在上面的示例中,signal_handler() 函数是信号处理程序,它会调用 asyncio.ensure_future() 来启动协程 do_work(),并在协程中设置 Event 的状态。当 Event 的状态被设置后,signal_handler() 会取消任务并关闭事件循环。

相关内容

热门资讯

透视真的!wepokerh5破... 透视真的!wepokerh5破解(透视)本来有挂(详细辅助系统教程)1、构建自己的辅助插件;2、选择...
透视透视!wepoker有插件... 透视透视!wepoker有插件吗(透视)好像有挂(详细辅助介绍教程)1、玩家可以在软件透明挂俱乐部对...
透视肯定!有没有人wepoke... 透视肯定!有没有人wepoker(透视)好像真的有挂(详细辅助2025新版教程)辅助器中分为三种模型...
透视攻略!wepokerplu... 透视攻略!wepokerplus透视脚本免费(透视)确实真的有挂(详细辅助必胜教程);透视攻略!we...
透视软件!wepoker模拟器... 透视软件!wepoker模拟器哪个好用(透视)总是有挂(详细辅助攻略教程)辅助器中分为三种模型:软件...
透视app!wepoker免费... 透视app!wepoker免费透视(透视)一直有挂(详细辅助科技教程)一、软件透明挂的定义与意义1、...
透视最新!wepoker安装教... 透视最新!wepoker安装教程(透视)好像真的有挂(详细辅助实用技巧);1、下载好辅助软件之后点击...
透视有挂!wepoker私人局... 透视有挂!wepoker私人局辅助器怎么用(透视)好像存在有挂(详细辅助2025新版技巧)一、软件透...
透视科技!菠萝辅助器免费版的特... 透视科技!菠萝辅助器免费版的特点(透视)确实有挂(详细辅助曝光教程)1、透视辅助简单,软件透明挂操作...
透视了解!hhpoker真的假... 透视了解!hhpoker真的假的(透视)总是真的是有挂(详细辅助线上教程)1)辅助挂:进一步探索辅助...