# -*- coding: utf-8 import sys import gc import os try: import psutil except ImportError: psutil = None try: input = raw_input except NameError: pass def iterit(size): big_var = list(range(size)) big_var2 = [big_var[:] for _ in range(6)] yield def test_iter(size): print("[row for row in iterit(%s)]" % size) [row for row in iterit(size)] def main(): test_iter(1<<24) print(_mem()) print('') test_iter(1<<23) print(_mem()) def _mem(pid=os.getpid()): # Trigger the garbage collector gc.collect(), gc.collect(), gc.collect() if psutil is None: return input('mem?') process = psutil.Process(pid) return('Memory usage: %5.1f MB' % (float(process.get_memory_info()[0]) / (1024 ** 2))) if __name__ == '__main__': print(sys.version) print('') main() # Output # $ python testiterbug.py # 2.7.3 (default, May 20 2012, 19:54:58) # [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] # # [row for row in iterit(16777216)] # Memory usage: 9.3 MB # # [row for row in iterit(8388608)] # Memory usage: 266.6 MB #