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能不能透视,靠谱教程(发现有挂);微信小程序微乐...
总算了解!闲逸斗地主辅助,德普... 总算了解!闲逸斗地主辅助,德普之星私人局辅助免费,教你攻略(有挂辅助);德普之星私人局辅助免费下载原...
一分钟了解!哈狗智能辅助,hh... 一分钟了解!哈狗智能辅助,hhpoker真的有透视吗,必赢教程(有挂规律);哈狗智能辅助软件透明挂更...
重大通报!多乐跑得快辅助器,h... 重大通报!多乐跑得快辅助器,hhpoker是真的吗,系统教程(有挂详细);多乐跑得快辅助器最新软件透...
发现一款!川娱竞技血战辅助器,... 《发现一款!川娱竞技血战辅助器,约局吧德州透视,介绍教程(有挂猫腻)》 川娱竞技血战辅助器软件透明挂...
实测揭晓!好友赣南新版本脚本,... 实测揭晓!好友赣南新版本脚本,德普之星透视辅助软件激活码,插件教程(真的有挂);小薇(透视辅助)致您...
玩家爆料!川南九九辅助,德州局... 玩家爆料!川南九九辅助,德州局hhpoker,爆料教程(有挂细节);川南九九辅助是一项川南九九辅助软...
分享一款!微乐春天扑克开挂辅助... 分享一款!微乐春天扑克开挂辅助插件,wepoker透视有吗,可靠教程(有挂功能)是一款可以让一直输的...
推荐十款!盛世2私人辅助,we... 推荐十款!盛世2私人辅助,wepoker俱乐部辅助器,AI教程(有挂助手);小薇(透视辅助)致您一封...
六分钟了解!上饶打炸辅助,We... 六分钟了解!上饶打炸辅助,WePoKer辅助器,细节揭秘(揭秘有挂);1、不需要AI权限,帮助你快速...