【问题标题】:Python profiler does not exit with proper exit codePython 探查器没有以正确的退出代码退出
【发布时间】:2018-08-27 11:53:15
【问题描述】:

我正在使用 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。

【问题讨论】:

    标签: python bash profiling pytest cprofile


    【解决方案1】:

    简短回答:没有

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

    # error.py
    raise Exception
    

    【讨论】:

    • 感谢您的回答,但我的问题更复杂,所以我编辑了原始帖子。希望您也能对此有所帮助。
    • @Konrad 现在你遇到了一个完全不同的问题。 pytest 模块在执行代码时捕获所有异常。即使它退出非零,正如我在回答中所说,检查脚本的退出代码不是分析器的工作。探查器根本不关心(检查)您的退出代码。
    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多