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() 会取消任务并关闭事件循环。

相关内容

热门资讯

玩家交流!手心电玩辅助器功能技... 您好,手心电玩这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款...
必备教程!魅力开挂功能教程,魅... 必备教程!魅力开挂功能教程,魅力其实存在有开挂教程(真实有辅助挂)1、首先打开魅力辅助器下载最新版本...
每日必看!中至吉安麻将透视功能... 每日必看!中至吉安麻将透视功能软件,中至吉安麻将总是是有透视软件(有辅助挂秘诀)1、完成中至吉安麻将...
一分钟带你了解!52斗地主辅助... 一分钟带你了解!52斗地主辅助器功能技巧,52斗地主确实是有辅助器技巧(有辅助挂解密)一、52斗地主...
总算明白!至尊娱乐城透视功能攻... 总算明白!至尊娱乐城透视功能攻略,至尊娱乐城真是存在有透视攻略(有辅助挂助手)1、全新机制【至尊娱乐...
实测交流!乐乐棋牌辅助功能神器... 实测交流!乐乐棋牌辅助功能神器,乐乐棋牌一直真的有辅助神器(有辅助挂详情)进入游戏-大厅左侧-新手福...
揭秘真相!友榆棋牌透视挂功能工... 揭秘真相!友榆棋牌透视挂功能工具,友榆棋牌竟然有透视挂工具(有辅助挂猫腻)1、友榆棋牌有没有辅助教程...
玩家亲测!五龙捕鱼开挂功能神器... 玩家亲测!五龙捕鱼开挂功能神器,五龙捕鱼总是是真的有开挂神器(有辅助挂讲解)1、五龙捕鱼公共底牌简单...
分享一款!杜鹃花透视功能方法,... 分享一款!杜鹃花透视功能方法,杜鹃花切实是有透视方法(详细教程辅助)1、不需要AI权限,帮助你快速的...
推荐几款新版!至友互娱透视功能... 推荐几款新版!至友互娱透视功能教程,至友互娱总是真的是有透视教程(有辅助挂神器)至友互娱是不是有人用...