python中的大范围循环

python中的大范围循环,python,algorithm,python-2.7,large-data,Python,Algorithm,Python 2.7,Large Data,在Python中,如何(高效地)循环遍历大范围?每当我试着像这样跑的时候- for x in range(105, 10000000000000): #do stuff 这需要一个永恒的过程来完成。我试过很多方法,比如iter,set,xrange,但仍然没有成功。是否有任何外部模块可以帮助我做到这一点 假设您有一个3GHz处理器,并且范围内的每个条目只需要一个周期,则需要约3333秒(约1小时)来处理它 这让我觉得你所做的有些根本性的错误。也许你应该重新构造你的问题。假设你有一个3G

在Python中,如何(高效地)循环遍历大范围?每当我试着像这样跑的时候-

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

这需要一个永恒的过程来完成。我试过很多方法,比如
iter
set
xrange
,但仍然没有成功。是否有任何外部模块可以帮助我做到这一点

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


这让我觉得你所做的有些根本性的错误。也许你应该重新构造你的问题。

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


这让我觉得你所做的有些根本性的错误。也许你应该重新组织你的问题。

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

更具体地说,您正在执行循环的大约1E+13次迭代。有了像样的代码和合理的快速处理器,您可能能够每秒执行大约4E+9条指令(例如,在2GHz的频率下,每个时钟周期执行2条指令)。这显然是不确切的,但现在让我们继续,看看我们的结局如何

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


一句话:改变表示范围的方式可能会有所帮助,但如果你需要在这么大的范围内进行迭代,这需要一段时间。鉴于范围,我认为可以肯定地说,几乎无论你做什么或如何做,都需要一段时间

更具体地说,您正在执行循环的大约1E+13次迭代。有了像样的代码和合理的快速处理器,您可能能够每秒执行大约4E+9条指令(例如,在2GHz的频率下,每个时钟周期执行2条指令)。这显然是不确切的,但现在让我们继续,看看我们的结局如何

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


一句话:更改表示范围的方式可能会有所帮助,但如果您需要在这么大的范围内进行迭代,这需要一段时间。

您可能必须在此处使用py3x,因为
xrange()
range()
都不适用于
100000000000
,您确实在一个很大的范围内进行迭代,并且每次迭代都需要一段时间来完成即使是很小的工作。你在循环中做什么,需要重复那么多次?相关:这与google codeJam有什么关系吗?google codeJam将允许你明天(在系统检查后)下载任何人的代码。您可以使用我的句柄将我添加到那里:xonixmonty您可能必须在这里使用py3x,因为
xrange()
range()
都不适用于
100000000000
。好吧,您确实在一个很大的范围内进行迭代,每次迭代都需要一段时间来完成即使是很小的工作。你在循环中做什么,需要重复那么多次?相关:这与google codeJam有什么关系吗?google codeJam将允许你明天(在系统检查后)下载任何人的代码。你可以用我的手柄把我加进去:xonixMonty