首页 > 解决方案 > 我们如何知道 python 代码在 c 或 c++ 中是否处于永无止境的循环中?

问题描述

我在 C/C++ 代码中嵌入 Python 解释器。如果 python 代码处于永无止境的循环中,则可能会说应用程序崩溃了,因为您无法终止 c++ 代码。所以我的问题是我怎么知道python代码是否处于一个永无止境的循环中,以便我可以将代码的执行返回到c++端?

标签: pythonc++

解决方案


一般来说,无法预测某段代码是否会永远运行。这被称为停止问题的不可判定性。现在您可能会在一些“微不足道的情况”中发现问题,但即使是看起来足够好的简单循环也可能很棘手。考虑以下代码:

def syracuse(n):
  while(n != 1):
    if(n % 2 == 0):
      n = n/2
    else:
      n = 3*n+1
  return True

每n>0都会返回吗?如果你能回答这个问题,你就证明了科拉茨猜想,这是一个长期存在的数学问题。

我可以建议的最好的事情是根据您认为合理的任意时间阈值来停止 Python 代码的执行。


推荐阅读