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