1

我如何(有效地)循环遍历 Python 中的巨大范围?每当我尝试运行类似 -

for x in range(105, 10000000000000):
    #do stuff

它需要永恒的时间才能完成。我已经尝试了很多类似iter,的方法setxrange但仍然没有成功。是否有任何外部模块可以帮助我做到这一点?

4

2 回答 2

4

鉴于范围,我认为可以肯定地说,几乎无论你做什么或如何做,都需要一段时间。

更具体地说,您正在执行循环的大约 1E+13 次迭代。使用不错的代码和合理的快速处理器,您可能每秒可以执行大约 4E+9 条指令(例如,在 2 GHz 时每个时钟周期 2 条指令)。这显然是不准确的,但现在让我们继续下去,看看我们会在哪里结束。

因此,即使我们假设循环的每次迭代只需要执行一条单周期指令,它也将花费大约:1E+13/4E+9 = 2.5E3 秒 = ~42 分钟。鉴于您在循环内做一些工作,并且循环本身有一些开销,我们显然将在每次迭代中执行不止一条机器代码指令。如果我们每次迭代必须执行 1000 条指令(可能是一个合理的初步近似值,因为你没有告诉我们你在做什么),那么我们正在寻找大约 600-700 小时要执行的循环。

底线:改变你代表你的范围的方式可能会有所帮助,但如果你需要在这么大的范围内进行迭代,那么就无法避免需要一段时间的事实。

于 2013-04-13T17:33:59.263 回答
2

假设您有一个 3GHz 处理器,并且您只需要一个周期来处理该范围内的每个条目,您将需要约 3,333 秒(约 1 小时)来处理它。

这使我认为您所做的事情从根本上是错误的。也许你应该重组你的问题。

于 2013-04-13T17:25:56.827 回答