[pyar] Duda, procesos e instancias

Alejandro Santos listas en alejolp.com
Mie Nov 16 14:03:40 ART 2011


2011/11/14 Martin Cerdeira <martincerdeira en gmail.com>:
>
> Ante todo, gracias a todos por las respuestas!
> La Queue, la tengo en mi ejemplo. No funciona, de alguna forma está creando
> una instancia diferente.

Exacto. Multiprocessing envía datos entre procesos haciendo un pickle
y unpickle de los objetos, por lo que vas a tener una instancia con un
id() diferente por cada uno. Si modificás una de las instancias, desde
el otro proceso vas a estar viendo la copia de la instancia.

Justamente por eso te está funcionando con threads, porque al acceder
a la variable estás accediendo a la misma instancia desde cada thread.

>>> A = [1, 2, 3]
>>> B = pickle.loads(pickle.dumps(A))
>>> B
[1, 2, 3]
>>> id(A)
140588036246416
>>> id(B)
140588036246488

> Veo que usás pop() y append() del objecto Queue. Es
> un error? O es la versión de Python, porque yo no tengo esos métodos.

Es la versión de Python que tengo corriendo en mi Gmail (?). No, en
serio, lo hice en pseudocodigo, los nombres de métodos pueden diferir
de la realidad.

-- 
Alejandro Santos



More information about the pyar mailing list