gpt4 book ai didi

python - python程序可以通过哪些方式终止而不抛出异常?

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:41 25 4
gpt4 key购买 nike

我问这个是因为我有一些使用锁定文件的 python 代码,我想知道在哪些情况下程序可以终止而不抛出异常(或以无法处理的方式结束),随后会有无需处理,必须手动删除锁定文件。我想做这样的事情:

try:
% Check if lock file exists; if not, create it, do some processing, etc...
finally:
% Process ended --or-- possibly exception thrown; clean up lock file

例如,ctrl+c 可以被异常处理,破管道可以被异常处理,等等......

我能想到的唯一一种程序可以毫无异常(exception)地终止的情况是计算机的电源被关闭。在这种情况下,我可以编写一个脚本来在启动时清除所有锁定文件。还有其他的吗?

编辑: 意思是说“锁定文件”而不是“标记文件”

最佳答案

os._exit 会立即终止程序,但不鼓励使用它...

其他情况涉及用户发送 SIGKILL (*NIX),或电源关闭或某种操作系统内核崩溃,或您的计算机从二楼窗口掉出......


请注意,如果您有想要删除的锁定文件,实现相同安全级别的等效(并且可能更惯用的方法)是使用上下文管理器。 contextlib 可以帮助解决这个问题:

import contextlib

@contextlib.contextmanager
def lock():
try:
create_lock()
yield 'whatever you want'
finally:
remove_lock()

用法如下:

with lock() as x:
assert x == 'whatever you want'
do_stuff_with_lock_safety()

显然,这并不比您最初使用 try/finally 的想法更安全(这也是我正在使用的)——但是每次使用时输入的次数更少,并且如果上下文管理器是您创建/删除锁的唯一方式,然后用户不需要记住如何自己清理,因为上下文管理器会为您完成。

关于python - python程序可以通过哪些方式终止而不抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36943665/

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