[Python-Dev] PEP: Post import hooks (original) (raw)
Phillip J. Eby pje at telecommunity.com
Tue Jan 15 23:04:42 CET 2008
- Previous message: [Python-Dev] PEP: Post import hooks
- Next message: [Python-Dev] PEP: Post import hooks
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
At 10:14 PM 1/15/2008 +0100, Christian Heimes wrote:
My code queues up new hooks while a sequence of hooks is processed. It makes sure that hooks for a parent aren't called in the middle of a child's hook chain.
Notice that that's not necessary with the notification algorithm I gave, since the list in post_import_hooks suffices as a queue. So, just as in peak.util.imports, the registration code doesn't need to know whether callbacks are being run; it only needs to know whether they're finished.
Of course, both the notification and registration functions must hold the import lock to prevent a race condition where one thread adds a hook to the list after another thread has just finished iterating over it and is about to replace the list with None. At least, they have to if they're executing any Python code that might cause the GIL to be released. The callbacks will release the GIL, of course, but the registration code probably doesn't... well, it will if it calls the hook, and ISTM that the hooks should always execute with the import lock held, even if they're fired at registration.
- Previous message: [Python-Dev] PEP: Post import hooks
- Next message: [Python-Dev] PEP: Post import hooks
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]