l = range(int(1E9))
Marko Rauhamaa
marko at pacujo.net
Sat May 2 15:15:49 EDT 2015
BartC <bc at freeuk.com>:
> (I tried an empty loop counting to 1 billion in Python 2.x, using 'for
> i in range'. It ran out of memory. Counting to 100 million instead, it
> worked, but still used a massive 1.5GB RAM while doing so (and took 6
> seconds to count to 100M, not too bad for Python)
>
> Outside Python, it might typically take a few seconds to count to 1
> billion, and would use virtually no memory.
>
> Why would anyone want to loop over all those numbers instead of
> iterating over actual data? For any number of reasons. Counting how
> many happy numbers are in that range for one!)
You're doing it wrong. Here's the Pythonic way to iterate over a billion
numbers:
def loop(i):
if i < 1000000000:
do_stuff(i)
keep_iterating(i + 1)
loop(0)
Marko
More information about the Python-list
mailing list