From a5eb93ac62979ac56f46f72158aa92c707d18226 Mon Sep 17 00:00:00 2001 From: Alex Hall Date: Fri, 10 May 2019 18:55:18 +0200 Subject: [PATCH] Delete frames when exiting to free up memory --- pysnooper/tracer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pysnooper/tracer.py b/pysnooper/tracer.py index 5bdebd9..0dd1138 100644 --- a/pysnooper/tracer.py +++ b/pysnooper/tracer.py @@ -181,7 +181,6 @@ class Tracer: v if isinstance(v, BaseVariable) else Exploding(v) for v in utils.ensure_tuple(watch_explode) ] - self.frame_to_old_local_reprs = collections.defaultdict(lambda: {}) self.frame_to_local_reprs = collections.defaultdict(lambda: {}) self.depth = depth self.prefix = prefix @@ -225,6 +224,7 @@ class Tracer: sys.settrace(stack.pop()) calling_frame = inspect.currentframe().f_back self.target_frames.discard(calling_frame) + self.frame_to_local_reprs.pop(calling_frame, None) def _is_internal_frame(self, frame): return frame.f_code.co_filename == Tracer.__enter__.__code__.co_filename @@ -270,8 +270,7 @@ class Tracer: ### Reporting newish and modified variables: ########################## # # - self.frame_to_old_local_reprs[frame] = old_local_reprs = \ - self.frame_to_local_reprs[frame] + old_local_reprs = self.frame_to_local_reprs[frame] self.frame_to_local_reprs[frame] = local_reprs = \ get_local_reprs(frame, watch=self.watch) @@ -334,5 +333,6 @@ class Tracer: return_value_repr = utils.get_shortish_repr(arg) self.write('{indent}Return value:.. {return_value_repr}'. format(**locals())) + del self.frame_to_local_reprs[frame] return self.trace