Awful code of the week

Chris Angelico rosuav at gmail.com
Tue Aug 9 01:37:47 EDT 2016


On Tue, Aug 9, 2016 at 3:20 PM, Steven D'Aprano
<steve+comp.lang.python at 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


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /