[pyar] threading.local..
david weil
tenuki en gmail.com
Mie Jul 13 15:34:41 ART 2011
2011/7/13 Tordek <kedrot en gmail.com>:
> On 13/07/11 14:13, david weil wrote:
>> Si no es un bug, no entiendo como debería funcionar o para que se usa...
>
> Con el ejemplo de pydoc:
>
> >>> mydata = local()
> >>> mydata.number = 42
> >>> mydata.__dict__
> {'number': 42}
> >>> mydata.__dict__.setdefault('widgets', [])
> []
> >>> mydata.widgets
> []
> >>> log = []
> >>> def f():
> ... items = mydata.__dict__.items()
> ... items.sort()
> ... log.append(items)
> ... mydata.number = 11
> ... log.append(mydata.number)
>
> >>> import threading
> >>> thread = threading.Thread(target=f)
> >>> thread.start()
> >>> thread.join()
> >>> log
> [[], 11]
> >>> mydata.number
> 42
> >>> mydata.widgets
> []
>
> Creás mydata, que es un local para cada thread, y le asignás valores.
>
> En el thread principal, mydata.number == 42, y mydata.widgets == [].
>
> Después tenés la función f, que asigna valores a mydata. Hacés que se
> ejecute en su propio thread. Podés ver que funciona correctamente porque log
> (que es global) da los valores correctos.
Ahh.. ahi entendí!!
Gracias!
> Con respecto a "para qué se usa"... es para cuando tenés una variable global
> que se asigna en otro lado, y otro thread la puede pisotear y
> sobreescribirla...
Claro, para poder parchear el código que usa globales, facilmente!
Gracias!
dave
--
There is no dark side of the moon really. Matter of fact it's all dark.
More information about the pyar
mailing list