Peter Otten added the comment:

Your code relies on the assumption that when the lambda is invoked the global t 
is still bound to the Thread instance you are starting. It seems that this is 
not always the case, and I don't see why it should be guaranteed either.
I don't know whether it's a good idea to store per-thread data in the Thread 
instance (have a look at threading.local()), but

def start_thread():
    t = Thread(target=lambda: f(t))
    t.obj = [0]
    t.start()

for _ in range(n_threads):
    start_thread()

will at least avoid the global.

----------
nosy: +peter.otten

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue27468>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to