Учитывая диапазон, я думаю, можно с уверенностью сказать, что почти независимо от того, что вы делаете или как вы это делаете, это займет некоторое время.
Чтобы быть более конкретным, вы выполняете приблизительно 1E + 13 итераций вашего цикла. С достойным кодом и разумным быстрым процессором вы можете выполнять около 4E + 9 инструкций в секунду (например, 2 инструкции на такт с частотой 2 ГГц). Это явно не точно, но на данный момент давайте просто поедем с ним и посмотрим, где мы закончим.
Таким образом, даже если предположить, что каждая итерация цикла требует выполнения только одной однотактной команды, она будет принимать приблизительно: 1E + 13/4E + 9 = 2,5E3 секунды = ~ 42 минуты. Учитывая, что вы выполняете некоторую работу внутри цикла, и есть некоторые накладные расходы для самого цикла, мы, очевидно, будем выполнять более одной инструкции машинного кода на итерацию. Если нам нужно выполнить, скажем, 1000 инструкций на итерацию (может быть разумным в первом приближении, учитывая, что вы ничего не сказали нам о том, что вы делаете), тогда мы смотрим на что-то вроде 600-700 часов для цикл для выполнения.
Подводная черта: изменение способа представления вашего диапазона может помочь, но если вам нужно перебирать диапазон в этом большом, то не уйти от того, что это займет некоторое время.
вам, возможно, придется использовать py3x здесь, так как '' xrange() 'и' range() 'не будут работать для' 10000000000000'. –
Ну, вы действительно итерации на огромном диапазоне, и делая даже миниатюрную работу, каждая итерация займет некоторое время. Что вы делаете внутри цикла, который требует повторения много раз? –
related: ['xrange (2 ** 100)' -> OverflowError: long int too large для преобразования в int] (http://stackoverflow.com/questions/1482480/xrange2100-overflowerror-long-int-too-large -to-convert-to-int) – jfs