Edgewall Software

Ticket #190: exprleak2.py

File exprleak2.py, 0.7 kB (added by cboos, 6 months ago)

Any exception would do, so no need for expr2 and no need to push a new frame.

Line 
1import gc
2from itertools import groupby
3from genshi.template.base import Context
4from genshi.template.eval import Expression
5
6expr1 = Expression("iter(groupby(test, key=lambda x: len(x)))")
7
8def run(**data):
9    ctxt = Context(**data)
10    for i, j in expr1.evaluate(ctxt):
11        ctxt['j'] = j
12        raise ValueError("bad")
13
14i = 10
15while i:
16    gc.collect()
17    num_objects = len(gc.get_objects())
18    try:
19        run(test=dict.fromkeys(map(str, range(10, 100))), groupby=groupby)
20    except Exception, e:
21        print e
22    i -= 1 # 2 passes needed for reaching fix-point
23
24    # check the memory usage again
25    gc.collect()
26    print num_objects, len(gc.get_objects())