On Mon, Oct 16, 2017 at 11:12 AM, Ethan Furman <et...@stoneleaf.us> wrote: > What would be really nice is to have attribute access like thread locals. > Instead of working with individual ContextVars you grab the LocalContext and > access the vars as attributes. I don't recall reading in the PEP why this > is a bad idea.
You're mixing up levels -- the way threading.local objects work is that there's one big dict that's hidden inside the interpreter (in the ThreadState), and it holds a separate little dict for each threading.local. The dict holding ContextVars is similar to the big dict; a threading.local itself is like a ContextVar that holds a dict. (And the reason it's this way is that it's easy to build either version on top of the other, and we did some survey of threading.local usage and the ContextVar style usage was simpler in the majority of cases.) For threading.local there's no way to get at the big dict at all from Python; it's hidden inside the C APIs and threading internals. I'm guessing you've never missed this :-). For ContextVars we can't hide it that much, because async frameworks need to be able to swap the current dict when switching tasks and clone it when starting a new task, but those are the only absolutely necessary operations. -n -- Nathaniel J. Smith -- https://vorpus.org _______________________________________________ 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