Pythonで巨大な範囲を(効率的に)ループするにはどうすればよいですか? 次のようなものを実行しようとするたびに-
for x in range(105, 10000000000000):
#do stuff
完了するには永遠が必要です。iter
、のような多くのことを試しましたがset
、xrange
まだ成功していません。それを行うのに役立つ外部モジュールはありますか?
Pythonで巨大な範囲を(効率的に)ループするにはどうすればよいですか? 次のようなものを実行しようとするたびに-
for x in range(105, 10000000000000):
#do stuff
完了するには永遠が必要です。iter
、のような多くのことを試しましたがset
、xrange
まだ成功していません。それを行うのに役立つ外部モジュールはありますか?
範囲を考えると、何をどのように行うかに関係なく、しばらく時間がかかると言っても過言ではありません。
より具体的には、ループの約 1E+13 反復を実行しています。適切なコードと適度に高速なプロセッサを使用すると、1 秒あたり約 4E+9 命令を実行できる可能性があります (たとえば、2 GHz でクロック サイクルあたり 2 命令)。それは明らかに正確ではありません。
したがって、ループの各反復で 1 つの単一サイクル命令のみを実行する必要があると仮定しても、およそ 1E+13/4E+9 = 2.5E3 秒 = ~42 分かかります。ループ内でいくつかの作業を行っており、ループ自体にいくらかのオーバーヘッドがあることを考えると、反復ごとに複数のマシンコード命令を実行することになることは明らかです。たとえば、反復ごとに 1000 命令を実行する必要がある場合 (何を行っているかについて何も言われていないことを考えると、合理的な最初の近似値である可能性があります)、600 ~ 700 時間ほどかかることになります。実行するループ。
結論: 範囲を表す方法を変更すると役立つ場合がありますが、これほど大きな範囲を反復処理する必要がある場合は、時間がかかるという事実から逃れることはできません。