[Python-Dev] PEP-419: Protecting cleanup statements from interruptions (original) (raw)
Paul Colomiets paul at colomiets.name
Mon Apr 9 09:05:33 CEST 2012
- Previous message: [Python-Dev] PEP-419: Protecting cleanup statements from interruptions
- Next message: [Python-Dev] PEP-419: Protecting cleanup statements from interruptions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Benjamin,
On Mon, Apr 9, 2012 at 12:42 AM, Benjamin Peterson <benjamin at python.org> wrote:
2012/4/8 Paul Colomiets <paul at colomiets.name>:
Function 'sys.setcleanuphook' -----------------------------
A new function for the
sysmodule is proposed. This function sets a callback which is executed every timefincleanupbecomes false. Callbacks get a frame object as their sole argument, so that they can figure out where they are called from. Calling a function every time you leave a finally block? Isn't that a bit expensive?
For signal handler it isn't, because you set it only when signal happens, and remove it when it first happens (in the common case)
For yield-based coroutines, there is a similar overhead of trampoline at each yield and each return, and exit from finally doesn't happen more often than return.
For both greenlets and yield-based coroutines it is intented to be used for exceptional situation (when timeout happens and coroutine currently in finally block), so can be turned off when unneeded (and even turned on only for this specific coroutine).
When hook is not set it's only checking of single pointer for NULL value at each exit from finally. This overhead should be negligible.
-- Paul
- Previous message: [Python-Dev] PEP-419: Protecting cleanup statements from interruptions
- Next message: [Python-Dev] PEP-419: Protecting cleanup statements from interruptions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]