gpt4 book ai didi

python - Python解释器执行完代码后如何退出?

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:56 31 4
gpt4 key购买 nike

一般情况下,Python解释器是如何退出的?

例如:

print('aaa')

执行此代码后,除了调用在 atexit 中注册的退出处理程序之外,解释器还做了什么以在正常退出时释放其资源(没有引发异常)并且没有调用 os. _退出

是否有 Python 解释器在每次退出时调用的主要钩子(Hook)/函数?

print('aaa')
_exit() # called automatically on every exit

最佳答案

假设没有调用os._exit(),所有的python初始化都是用Py_Initialize启动解释器,然后执行给定的Python代码,然后向上传递状态操作系统代码。真的是这样的:

    n = PyImport_ImportFrozenModule("__main__");
if (n == 0)
Py_FatalError("__main__ not frozen");
if (n < 0) {
PyErr_Print();
sts = 1;
}
else
sts = 0;

if (inspect && isatty((int)fileno(stdin)))
sts = PyRun_AnyFile(stdin, "<stdin>") != 0;

#ifdef MS_WINDOWS
PyWinFreeze_ExeTerm();
#endif
if (Py_FinalizeEx() < 0) {
sts = 120;
}

error:
PyMem_RawFree(argv_copy);
if (argv_copy2) {
for (i = 0; i < argc; i++)
PyMem_RawFree(argv_copy2[i]);
PyMem_RawFree(argv_copy2);
}
PyMem_RawFree(oldloc);
return sts;

甚至 sys.exit 也只是引发异常,以便解释器干净地退出。

Is there a main hook/function that the Python interpreter calls on every exit?

只需用 try..finally 包装你的 main()

关于python - Python解释器执行完代码后如何退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45020080/

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