[Python-Dev] Adding a threadlocal to the Python interpreter

Christian Heimes christian at python.org
Thu May 19 06:34:22 EDT 2016


On 2016-05-19 04:30, Nick Coghlan wrote:
> On 18 May 2016 at 23:20, Daniel Holth <dholth at 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>":

In case you wonder about subdicts, they are required to provide multiple
thread local objects. Each thread local instance has its own key in each
thread state dict. The approach enables thread local to have independent
storage objects.

Christian


More information about the Python-Dev mailing list