John Henry wrote: > Wesley Henwood wrote: > > Is this normal behavior? Based on the little documentation I have been > > able to find on this topic, it is normal behavior. The only way to use > > same-named variables in scripts is to have them run in a different > > process, rather than different threads. > > Yes and No. > > local variables are local to each threads. Global variables are > global to the threads.
That is somewhat misleading. _All_ variables accessible from two threads are shared. This includes globals, but also object attributes and even local variables (you could create a closure to share a local among threads). The only reason locals appear "thread-local" is that locals are "invokation-local" in that they are different bindings every time a function is executed, and generally a single invokation of a function is confined to a single thread. Another way to share local variables is to create a generator, and call .next() in two different threads... the local variables are simulatneously modifiable by both threads. FWIW, there is also threading.local(). -MIke -- http://mail.python.org/mailman/listinfo/python-list