How much ram does your machine have?
the main point is "except when a very large range is used on a
memory-starved machine"
run
x = range(10 ** 6)
and look at the memory usage of python..
what happens when you run this program:
import time
def t(func, num):
s = time.time()
for x in func(num):
pass
return time.time() - s
def run(func, num):
times = []
for x in range(5):
times.append(t(func,num))
return min(times), max(times), sum(times)/5
def main():
x = 10 ** 6
while 1:
print "trying", x
for s, f in ('xr', xrange), (' r', range):
print s + " %.3f %.3f %.3f" % run(f, x)
x *= 1.5
x = int(x)
if __name__ == "__main__":
main()
I get (columns are mix/max/average):
trying 1000000
xr 0.110 0.115 0.111
r 0.101 0.186 0.119
trying 1500000
xr 0.082 0.087 0.083
r 0.152 0.158 0.154
trying 2250000
xr 0.124 0.138 0.128
r 0.228 0.235 0.230
trying 3375000
xr 0.184 0.189 0.186
r 0.344 0.352 0.346
trying 5062500
xr 0.276 0.284 0.279
r 0.515 0.528 0.519
trying 7593750
xr 0.415 0.421 0.416
r 0.774 0.795 0.779
trying 11390625
xr 0.623 0.634 0.626
r 1.163 1.246 1.180
trying 17085937
xr 0.934 0.941 0.937
Killed
The "Killed" is from the linux OOM killing the python process.. notice
that the xrange for that number worked fine.
--
http://mail.python.org/mailman/listinfo/python-list