On Tue, Aug 9, 2016 at 3:20 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: >> def process(self, stuff): >> files = self.files >> files = [] # to save memory >> files = self.files >> for file in files: >> file.process(stuff) >> return 1 > > def process(self, stuff): > try: > files = self.files > del files # to save memory > files = [] # just to be sure > files = self.files > for file in files: > file.process(stuff) > return 1 > finally: > del files > del file > del stuff > del self # this has to come last > > > You can't be too careful with memory management.
Right. Of course, it gets very onerous, so we tend to use a context manager instead. def process(self, stuff): with deallocate() as cleanup: cleanup(self) cleanup(stuff) files = self.files cleanup(files) del files files = [] cleanup(files) files = self.files cleanup(files) for file in files: cleanup(file) file.process(stuff) return 1 There, isn't that so much better? ChrisA -- https://mail.python.org/mailman/listinfo/python-list