[zeromq-dev] Passing a python object (PyZMQ)

Arnaud Loonstra arnaud at sphaero.org
Mon Jun 8 10:35:12 CEST 2015


On 06/06/2015 01:52 AM, MinRK wrote:
> Without using ctypes, you could pass the objects through a namespace:
>
> |# shared namespace
> ns = {}
>
> # sender
> ns[id(obj)] = obj
> pipe_out.send(struct.pack(b'Q',1))
>
> # receiver
> id_bytes = pipe_in.recv()
> obj_id = struct.unpack(b'Q', id_bytes)[0]
> obj = ns.pop(obj_id)
> |
>
> The ctypes cast approach doesn’t hold a reference to the object while
> it’s in transit, so it’s possible for the restoration to fail if the
> object has been garbage collected in between send/recv.
>

You're right I ended up doing something very similar to workaround early 
garbage collection but this is much nicer. However it only works between 
a producer and consumer thread, not more. So every producer thread needs 
its own namespace.

Rg,

Arnaud
-- 
w: http://www.sphaero.org
t: http://twitter.com/sphaero
g: http://github.com/sphaero
i: freenode: sphaero_z25



More information about the zeromq-dev mailing list