[Python-Dev] PEP 550 v4

francismb francismb at email.de
Sat Aug 26 16:45:07 EDT 2017


Hi,

> Multithreaded Code
> ------------------
> 
> In multithreaded code, context variables behave like thread locals::
> 
>     var = new_context_var()
> 
>     def sub():
>         assert var.lookup() is None  # The execution context is empty
>                                      # for each new thread.
>         var.set('sub')
> 
>     def main():
>         var.set('main')
> 
>         thread = threading.Thread(target=sub)
>         thread.start()
>         thread.join()
> 
>         assert var.lookup() == 'main'
> 
it's by design that the execution context for new threads to be empty or
should it be possible to set it to some initial value? Like e.g:

     var = new_context_var('init')

     def sub():
         assert var.lookup() == 'init'
         var.set('sub')

     def main():
         var.set('main')

         thread = threading.Thread(target=sub)
         thread.start()
         thread.join()

         assert var.lookup() == 'main'


Thanks,
--francis


More information about the Python-Dev mailing list