[pyar] threading.local..

Claudio Freire klaussfreire en gmail.com
Mie Jul 13 14:49:21 ART 2011


2011/7/13 Gustavo Campanelli <gedece en gmail.com>:
> En la primera parece que se asigna o crea la variable x con valor cinco,
> pero si la variable no está declarada en local, entonces no va a existir en
> el thead 2.
>
> Gedece

No, no son diferentes threads, sólo diferentes namespaces.

Cada objeto thread.local actúa como un namespace, como un "repositorio
threadlocal", cada repositorio siendo independiente.

El uso es el opuesto, cuando usás un threadlocal único desde varios
threads, los valores son independientes:


>>> import threading
>>> import time
>>> tl = threading.local()
>>> def f(y):
...     tl.x = y
...     time.sleep(10)
...     print tl.x
...
>>> def g():
...    t1 = threading.Thread(target=f, args=(3,))
...    t2 = threading.Thread(target=f, args=(5,))
...    t1.start()
...    time.sleep(1)
...    t2.start()
...
>>> g()
>>> 3
5



More information about the pyar mailing list