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