Python cProfile/pstats 导致溢出?

问题描述

我正在尝试在我的 main() 函数上使用以下装饰器来分析一个相当大的项目,但是在第 9 行我得到一个“进程已完成,退出代码 -1073741571 (0xC00000FD)”,在 Google 上搜索似乎指堆栈溢出。

这是否意味着我不能一次分析我的整个程序?我没有使用递归,这似乎是此问题的常见原因。我的项目使用进化算法,如 NSGA3。我注意到改变进化迭代次数可以使问题不发生,但没有明确的模式(问题发生在 10 次迭代,而不是 200 次)。

除了退出代码之外,还有其他方法可以获取更多信息来帮助我找到问题吗?我尝试使用 pycharm 的调试器跟踪变量,但它没有帮助,因为我真的不知道我在寻找什么。检查 pstats 内部,执行过程是 init->self.init->self.load_stats->arg.create_stats->self.snapshot_stats->self.getstats,这就是它以退出代码 -1073741571 (0xC00000FD) 停止的地方。

我知道你们在没有完整代码的情况下受到限制,但欢迎任何有关我如何追踪问题的建议。

def inner(*args,**kwargs):
    pr = cProfile.Profile()
    pr.enable()
    retval = fnc(*args,**kwargs)
    pr.disable()
    s="dirpath\\profiling_cumulative.txt"
    with open(s,'w') as stream:#io.StringIO()
        sortby = 'cumulative'
        ps = pstats.Stats(pr,stream=stream) #the program stops here 
        ps.sort_stats(sortby)
        ps.print_stats()
    s="dirpath\\profiling_tottime.txt"
    with open(s,'w') as stream:
        sortby = 'tottime'
        ps = pstats.Stats(pr,stream=stream).sort_stats(sortby)
        ps.print_stats()
    return retval

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)