“防崩溃”脚本与使用systemd来确保近乎恒定的操作 - python

也许这是一个广泛的问题,但是我没有在其他地方找到答案,所以去吧。

我正在编写的Python脚本需要在已部署的设备上持续运行(在一个完美的世界中,我意识到这可能并非完全可能)。我已经花了很多时间在整个过程中添加“ try ... except”语句,以便在出现问题时脚本可以恢复并继续工作。

问题是我不确定是否可以(也不应该)处理可能引发的每个单个异常。因此,我决定允许脚本死掉并使用systemd重新启动它可能更好。

三个选项:

不尝试处理任何异常,仅允许systemd在死时重新启动它。
精心地为每个可能的异常创建处理程序,以确保在没有断电,解释器错误或宇宙热死的情况下,脚本将始终运行。
两者的混合-努力防止某些情况下的崩溃,同时允许其他情况下的崩溃,并让systemd重新启动脚本。

第三种选择对我来说似乎是最合理的。所以问题是这样的:在“防崩溃”代码与允许崩溃并由systemd重新启动之间进行优化时,应考虑哪些因素?

有关特定于应用程序的更多信息:启动脚本涉及很小但很明显的开销,主要部分每秒将运行50到100次,这不是“关键任务”,因为在此不会造成死亡/损坏。如果发生故障(仅会丢失一些数据),我已经预计到网络将出现间歇性问题。

参考方案

应处理所有已知的例外情况。任何未定义的行为都是潜在的安全问题。

正如您所建议的那样,对未知的异常进行计划也是谨慎的。也许还有很小的内存泄漏,即使正确运行,也会导致应用程序崩溃。因此,即使已处理所有预期的故障模式,systemd如果失败也会自动重新启动仍然是谨慎的做法。

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python ThreadPoolExecutor抑制异常 - python

from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python:无法识别Pip命令 - python

这是我拍摄的屏幕截图。当我尝试在命令提示符下使用pip时,出现以下错误消息:pip无法识别为内部或外部命令,可操作程序或批处理文件。我已经检查了这个线程:How do I install pip on Windows?我所能找到的就是我必须将"C:\PythonX\Scripts"添加到我的类路径中,其中X代表python版本。如您在我的…