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

相关内容

热门资讯

wpk俱乐部是做什么的!wep... wpk俱乐部是做什么的!wepoker提高好牌率(透视)攻略-确实分享有挂1、操作简单,无需wpk俱...
pokemmo手机版脚本免费!... pokemmo手机版脚本免费!newpoker脚本(透视)app-总是解谜是有挂1、点击下载安装,p...
pokemmo辅助官网!pok... pokemmo辅助官网!pokerworld修改器(透视)脚本-竟然揭露存在有挂1、起透看视 pok...
wpk私人辅助!哈糖大菠萝怎么... wpk私人辅助!哈糖大菠萝怎么开挂(透视)工具-确实揭幕真的是有挂1、玩家可以在哈糖大菠萝怎么开挂透...
wpk私人局有透视吗!wepo... wpk私人局有透视吗!wepoker怎么设置房间(透视)技巧-本来有挂真的有挂小薇(辅助器软件下载)...
wpk辅助是什么!wepoke... wpk辅助是什么!wepoker透视脚本是什么(透视)攻略-一直关于有挂1、全新机制【wepoker...
hhpoker万能辅助器!约局... hhpoker万能辅助器!约局吧游戏挂(透视)攻略-一直分享是有挂暗藏猫腻,小编详细说明hhpoke...
aapoker能控制牌吗!hh... aapoker能控制牌吗!hhpoker有没有辅助(透视)神器-竟然揭幕有挂1、aapoker能控制...
拱趴大菠萝开挂方法!wepok... 拱趴大菠萝开挂方法!wepoker黑侠辅助器正版下载(透视)方法-总是普及是有挂1、全新机制【wep...
pokeplus脚本!德普之星... pokeplus脚本!德普之星私人局辅助器(透视)器-真是揭露真的是有挂进入游戏-大厅左侧-新手福利...