import unittest import gc class TestGC(unittest.TestCase): def test_zip(self): container = [] iterator = zip([container], [container]) # untrack the internal zip->result=(None, None) gc.collect() # create a reference cycle: container -> iterator -> container container.append(iterator) next(iterator) # zip->result=(container, container) del container, iterator # Try to break the reference cycle gc.collect()