gpt4 book ai didi

python - 从 Python 中的另一个函数中断函数执行

转载 作者:太空狗 更新时间:2023-10-30 02:45:20 24 4
gpt4 key购买 nike

我有一个函数 a 执行一些任务,另一个函数 b 是对某些事件的回调。每当事件发生时,函数 b 就会被调用,我想让它能够中断函数 a 的执行。这两个函数都在同一个类中声明。

函数 a 不应调用函数 b。函数 b 是完全独立的,它是对来自 ROS:机器人操作系统的“检测到用户面部”等外部事件的回调。

我需要的基本上是类似 Ctrl+C 的东西,可以从 Python 中调用它,它只会中止目标函数,而不是整个程序。

这可以用 Python 完成吗?

最佳答案

通常建议不要使用异常调用来进行流程控制。相反,请查看 python stdlib 的 threading.Event ,即使您只打算使用一个线程(即使是最基本的 Python 程序也至少使用一个线程)。

这个答案https://stackoverflow.com/a/46346184/914778对于调用一个函数(函数 b)如何中断另一个函数(函数 a)有很好的解释。

这里有几个重要的部分,是从另一个答案中总结出来的。

设置线程库:

from threading import Event
global exit
exit = Event()

这是 time.sleep(60) 的一个很好的替代品,因为它可以被中断:

exit.wait(60)

此代码将执行,直到您将 exit 更改为“set”:

while not exit.is_set():
do_a_thing()

这将导致 exit.wait(60) 停止等待,并且 exit.is_set() 将返回 True:

exit.set()

这将再次启用执行,并且 exit.is_set() 将返回 False:

exit.clear()

关于python - 从 Python 中的另一个函数中断函数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25029537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com