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

相关内容

热门资讯

随着!连连看辅助源码!果然真的... 随着!连连看辅助源码!果然真的是有辅助挂(有挂教学)-哔哩哔哩1、上手简单,内置详细流程视频教学,新...
今天下午!巴郎新疆开挂!果然真... 今天下午!巴郎新疆开挂!果然真的是有辅助软件(有挂透明挂)-哔哩哔哩1、每一步都需要思考,不同水平的...
反观!情怀游戏辅助器!一直存在... 反观!情怀游戏辅助器!一直存在有辅助挂(有挂技术)-哔哩哔哩1、任何情怀游戏辅助器透视是真的假的的玩...
为了进一步!广西老友有破解吗!... 为了进一步!广西老友有破解吗!一直真的是有辅助平台(揭秘有挂)-哔哩哔哩广西老友有破解吗辅助器是一种...
近日!哥哥游戏辅助神器!果然存... 近日!哥哥游戏辅助神器!果然存在有辅助软件(有挂总结)-哔哩哔哩1、进入到哥哥游戏辅助神器是否有挂之...
据统计!逗娱碰胡俱乐部插件!果... 据统计!逗娱碰胡俱乐部插件!果然真的是有辅助app(今日头条)-哔哩哔哩1、许多玩家不知道逗娱碰胡俱...
截至目前!四川熊猫游戏辅助器!... 截至目前!四川熊猫游戏辅助器!真是是有辅助平台(有挂教学)-哔哩哔哩1、操作简单,无需四川熊猫游戏辅...
有了最新消息!四川游戏家园修改... 有了最新消息!四川游戏家园修改器!本来有挂辅助软件(有挂解密)-哔哩哔哩在进入四川游戏家园修改器软件...
无独有偶!新518互游辅助!竟... 无独有偶!新518互游辅助!竟然有挂辅助app(有挂辅助)-哔哩哔哩1、该软件可以轻松地帮助玩家将新...
备受关注的!友乐广西南宁透视!... 备受关注的!友乐广西南宁透视!其实是真的辅助平台(真是有挂)-哔哩哔哩友乐广西南宁透视脚本下载中分为...