gpt4 book ai didi

python - 如何在树莓派上退出python程序

转载 作者:行者123 更新时间:2023-12-04 18:01:07 31 4
gpt4 key购买 nike

我的 python 程序在 RaspBerry Pi 上运行,并实例化了几个对象(GPIO 输入和输出、http 服务器、webSocket、I2C 接口(interface)等...,带线程)

退出我的程序时,我尝试清除所有资源,并删除所有实例。对于网络对象,我关闭监听套接字等。我以 sys.exit() 调用结束,但程序没有退出,也没有单独返回到 linux 控制台(我需要按 ctrl+z)。

有没有对象没有释放,怎么知道,怎么强制退出?

最好的问候。

最佳答案

我正在使用 Kivy 库为 Raspberry Pi 编程,我遇到了类似的问题。这个主题中的评论帮助我解决了它。

在我的例子中,Kivy 使用“Clock()”对象以特定时间间隔调用函数,提供主程序循环。

事实证明,尽管在 PC(Linux 或 Windows)上一切正常,但在 Raspberry Pi 上您必须手动停止所有程序循环,否则“sys.exit()”将无法工作。

起初,我在按键时执行“sys.exit()”命令。这对 Raspberry 不起作用。所以,我使用了一个全局变量,当按下退出键时它会改变值,并在程序循环中检查它的值,然后我调用“sys.exit()”(和“return False”,它向 Kivy 发出信号销毁 Clock() 对象)。

我也一直在为我的程序中的一些动画使用单独的 Clock() 对象,我注意到如果我在动画运行时按下退出,我的程序会卡住而不退出 - 就像以前一样,因为“sys.exit()”在某些 Clock() 对象运行时被调用。

底线是 - 如果您在 Raspberry Pi 上遇到“sys.exit()”问题,请在调用 sys.exit() 之前确保代码中的所有程序循环都已停止

作为最简单的例子,如果你有一个运行循环的程序,比如

while True:

改为使用

while running:
# where running = True

然后在调用“sys.exit()”之前更改为“running = False”。

关于python - 如何在树莓派上退出python程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35203141/

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