[issue42443] Provide Thread creation hook support

Gregory P. Smith report at bugs.python.org
Wed May 19 20:38:55 EDT 2021


Gregory P. Smith <greg at krypto.org> added the comment:

> > * IMO it should be called after profiling and tracing hook, so non-trivial hooks can be profiled and traced.
> Makes sense, Done.

I updated the PR do this.  (if your "Done" indicated you had done this somewhere, it appears you never pushed your changes to the PR branch on github :)

> > * It's important to define and document, which thread runs the hook 
> (calling thread or new thread).
> Will update documentation when we agree upon appropriate API.

I updated the docstring in the PR.

> > * Since the hook is designed to monitor thread creation, would it make sense to pass the thread object to the hook?
> As it's called within the context of the created thread I guess this is not needed (but as you prefer).

I updated the PR to do this.

> > * How does the hook behave when the callback raises an exception?
> I guess it makes sense to do similar thing as in case of profile/trace hooks (Error in the profile function will cause itself unset). WDYT?

I like the consistency.  I've updated the PR.

> > * Is a single hook good enough or should the API behave more like atexit, which supports an arbitrary amount of hooks?
> Feels like it makes sense to keep API similar to what profile/trace provides, otherwise it would be inconsistent.

Agreed.  when writing the docs we can mention this.  Anyone setting these hooks would be wise to check what's already set and decide if they want to set theirs at all or save that and chain call it or not.  It is expected to be rare to set this.  Our own use case is effectively platform wide for use in most applications.

> > * Instead of just a creation hook, how about lifetime hooks are also called when a thread ends?
> Sounds fine, do you mean two independent hooks (_thread_creation_hook, _thread_termination_hook) or some other form?

Lets leave this as a separate feature to add if the need arises.  I can imagine uses in threading tests, but that doesn't feel like a strong use case.

----------
versions: +Python 3.11

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue42443>
_______________________________________


More information about the Python-bugs-list mailing list