Python 探查器没有以正确的退出代码退出

Python profiler does not exit with proper exit code

我正在使用 cProfile 分析一个 python 脚本,我希望它的退出代码与我的脚本的退出代码相同。

假设我的脚本 error.py 是:

import sys

print ("Error")
sys.exit(1)

当然当我运行它时:

python3 error.py

进程以代码 1 退出,但是当我使用以下命令 运行 它时:

python3 -m cProfile error.py

退出代码为 0,我想将 error.py 的退出代码传播到探查器。

有办法实现吗?


编辑

应用 pkqxdd 的建议有帮助,但我的问题更复杂。 error.py 现在是:

print ("Error")
raise Exception

但是,我将 cProfile 与 py.test-3 一起使用如下:

 python3 -m cProfile -o profile $(which py.test-3) error.py

上面的命令仍然产生退出代码 0。

简答:否

因为探查器的非零退出代码意味着 运行 探查器出现错误。检查脚本的退出代码不是探查器的工作。但是,如果您只关心退出代码,则可以引发异常:

# error.py
raise Exception