Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #94514

Re: register cleanup handler

From Neal Becker <ndbecker2@gmail.com>
Subject Re: register cleanup handler
Date 2015-07-24 13:35 -0400
References <mailman.950.1437749869.3674.python-list@python.org> <55b26ad1$0$2920$e4fe514c@news.xs4all.nl>
Newsgroups comp.lang.python
Message-ID <mailman.954.1437759337.3674.python-list@python.org> (permalink)

Show all headers | View raw


Irmen de Jong wrote:

> On 24-7-2015 16:57, Neal Becker wrote:
>> I have code like:
>> 
>> if (condition):
>>   do_something_needing_cleanup
>> 
>> code_executed_unconditionally
>> 
>> <cleanup has to happen here if required, even if above did return,
>> continue or exception>
>> 
>> Now, how can I make sure cleanup happens?  Actually, what I really would
>> like, is:
>> 
>> if (condition):
>>   do_something_needing_cleanup
>>   register_scoped_cleanup (cleanup_fnc)
>> 
>> code_executed_unconditionally
>> 
>> 
>> So, any thoughts/hopes of python being able to do something like this?
>> 
>> I know we have try/finally, but I don't think that helps here, because
>> code_executed_unconditionally couldn't be inside the try.  Or am I
>> missing something obvious?
>> 
> 
> Sounds like you want a context manager, see
> https://docs.python.org/3/library/contextlib.html#replacing-any-use-of-try-finally-and-flag-variables
> 
> Irmen

Yes, that looks great!  I'm using py2.7.10, so I tried 'contexter' package.
if (condition):

with ExitStack() as stack:
  if condition:
    do_something()
    def cleanup_resources():
      some_cleanup_using_closure()
    stack.callback(cleanup_resources)
  unconditionally_executed_code_no_worrying_about_cleanup()

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

register cleanup handler Neal Becker <ndbecker2@gmail.com> - 2015-07-24 10:57 -0400
  Re: register cleanup handler Irmen de Jong <irmen.NOSPAM@xs4all.nl> - 2015-07-24 18:41 +0200
    Re: register cleanup handler Neal Becker <ndbecker2@gmail.com> - 2015-07-24 13:35 -0400

csiph-web