title: What's the life-time of a thread-local value in Python?
body: <pre><code>import threading
  
  mydata = threading.local()
  
  def run():
      # When will the garbage collector be able to destroy the object created
      # here? After the thread exits from ``run()``? After ``join()`` is called?
      # Or will it survive the thread in which it was created, and live until
      # ``mydata`` is garbage-collected?
      mydata.foo = object()
  
  t = threading.Thread(target=run)
  t.start()
  t.join()
  </code></pre>