手动终止迭代/收敛循环?

时间:2017-02-01 21:28:05

标签: python signals keyboardinterrupt

我在Python中做了很多数据分析。有许多算法以这样的方式设置,即它们逐渐逼近问题的良好输出,并在达到最大迭代次数或容差参数时中断。 (伪代码

def fn(X):
    answer = initial_guess(X)
    for i in range(max_iterations):
       answer = refine_answer(X, answer)
       if is_good_enough(answer):
          break
    return answer

如果我手上有很多时间,我就等到功能结束。但是对于交互式分析,这可能非常烦人且次优,因为大多数改进都来自前几次迭代,并且从那里收益递减。我们在这里谈论15分钟+算法以实现完全收敛。

所以我正在寻找的是一种很好的方法,可以选择性地手动中断这样的循环,而不需要解释我的解释器,然后返回当前最佳结果,以便我可以继续进行分析。

我想我可以通过捕捉一些其他信号来捕捉KeyboardInterrupt,或者更隐约,这样我仍然可以使用Ctrl + C,如果那是我真正想要的。是否有标准或好的方法来做到这一点?

0 个答案:

没有答案