如何(有效地)在Python中循环遍历大范围?每当我尝试运行像 -
这样的东西for x in range(105, 10000000000000):
#do stuff
需要永恒才能完成。我尝试了许多内容,例如iter
,set
,xrange
,但仍然没有成功。有没有可以帮助我做到这一点的外部模块?
答案 0 :(得分:4)
考虑到范围,我认为可以说几乎不管你做什么或怎么做,都需要一段时间。
更具体地说,您正在执行大约1E + 13次循环迭代。使用合适的代码和合理的快速处理器,您可以每秒执行大约4E + 9条指令(例如,2 GHz时每个时钟周期2条指令)。这显然不是确切的,但暂时让我们继续它,看看我们最终会在哪里。
因此,即使我们假设循环的每次迭代都只需要执行一个单周期指令,它也需要大约:1E + 13 / 4E + 9 = 2.5E3秒= ~42分钟。鉴于你在循环中做了一些工作,并且循环本身有一些开销,我们显然每次迭代将执行多个机器代码指令。如果我们每次迭代必须执行1000条指令(可能是合理的初步近似值,假设您没有告诉我们您正在做什么),那么我们正在寻找类似于600-700小时的事情。要执行的循环。
底线:改变你代表你的范围的方式可能会有所帮助,但是如果你需要迭代这个范围很大的范围,那么它就会花费一段时间。
答案 1 :(得分:2)
假设您有一个3GHz处理器,并且您只需要一个周期来处理该范围内的每个条目,您需要约3,333秒(约1小时)来处理它。
这让我觉得你正在做的事情存在根本性的错误。也许你应该重构你的问题。