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

相关内容

热门资讯

透视机巧!wepoker轻量版... 透视机巧!wepoker轻量版透视系统,wepoker怎么挂底牌(透视)果然是真的挂(哔哩哔哩)1、...
透视总结!wpk透视是真的吗,... 您好,wpk系统是否存在作必弊行为这款游戏可以开挂的,确实是有挂的,需要了解加去威信【4852750...
透视窍门!wpk德州局怎么透视... 透视窍门!wpk德州局怎么透视,德普之星的辅助工具介绍(透视)好像真的有挂(哔哩哔哩)1、德普之星的...
透视项目!wepoker开脚本... 透视项目!wepoker开脚本视频,拱趴大菠萝有什么挂(透视)竟然有挂(哔哩哔哩)1、不需要AI权限...
透视模板!约局吧德州有挂吗,x... 透视模板!约局吧德州有挂吗,xpoker怎么作必弊(透视)果然真的有透视挂(哔哩哔哩)1、约局吧德州...
透视总结!xpoker辅助,w... 透视总结!xpoker辅助,wepoker怎么挂飞机(透视)一直存在有挂(哔哩哔哩)1、wepoke...
透视绝活儿!德州局透视,拱趴大... 透视绝活儿!德州局透视,拱趴大菠萝挂(透视)总是真的有透视软件(哔哩哔哩)1、完成拱趴大菠萝挂辅助器...
透视技法!wpk插件,hhpo... 透视技法!wpk插件,hhpoker脚本下载(透视)原来真的是有挂(哔哩哔哩)小薇(辅助器软件下载)...
透视模块!aapoker辅助怎... 透视模块!aapoker辅助怎么用,aapoker破解侠是真的吗(透视)本来存在有透视脚本(哔哩哔哩...
透视指南书!hh poker软... 透视指南书!hh poker软件,wepoker底牌透视(透视)果然存在有挂(哔哩哔哩)1、wepo...