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 _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
