On 18 May 2016 at 23:20, Daniel Holth <dho...@gmail.com> wrote: > I would like to take another stab at adding a threadlocal "str(bytes) raises > an exception" to the Python interpreter, but I had a very hard time > understanding both how to add a threadlocal value to either the interpreter > state or the threadlocal dict that is part of that state, and then how to > access the same value from both Python and CPython code. The structs were > there but it was just hard to understand. Can someone explain it to me?
Christian covered the C aspects of the API, while the general purpose Python aspects live in the threading module. However, the Python level thread-local API doesn't provide direct access to the thread state dict. Instead, it provides access to subdicts stored under per-object keys in that dict, keyed as "thread.local.<id>": * Key definition in local_new: https://hg.python.org/cpython/file/tip/Modules/_threadmodule.c#l705 * Subdict creation in _ldict: https://hg.python.org/cpython/file/tip/Modules/_threadmodule.c#l810 Getting access to state stored that way from C is *possible*, but significantly less convenient than access the thread state directly. What that means is that any time we want to expose thread local state to both C and Python code, it will generally be the responsibility of the C code to both manage the key in the thread state dict (or the field in the thread state struct), and also to provide a Python API for access that state. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com