Exemplo n.º 1
0
 def test_snapshot(self):
     with restore_gc_state():
         gc.disable()
         original_objects = snapshot()
         create_cycles()
         new_objects = snapshot()
         diff = new_objects - original_objects - ObjectGraph(
             original_objects.owned_objects())
         self.assertEqual(len(diff), 4)
Exemplo n.º 2
0

class SomeComputation(object):
    def __init__(self, value):
        self.value = value

    def compute(self):
        return self.value**2


def do_some_computations(jobs_queue, results_queue):
    computations = [SomeComputation(n) for n in [11, 15, 17]]
    for computation in computations:
        jobs_queue.put(computation.compute)
    for computation in computations:
        print(results_queue.get())

do_some_computations(jobs_queue, results_queue)


import refcycle
snapshot = refcycle.snapshot()
c = next(c for c in snapshot if isinstance(c, SomeComputation))

snapshot.ancestors(c).export_image('computations.svg')
snapshot.ancestors(c).export_image('computations.pdf')

frame = snapshot.parents(snapshot.parents(c)[0])[0]
print(repr(frame.f_code))
print(repr(frame.f_locals))