##// END OF EJS Templates
Provide configuration hook to specify allowable heartmonitor misses from controller checking engine connectivity
Provide configuration hook to specify allowable heartmonitor misses from controller checking engine connectivity

File last commit:

r9190:20a102a5
r10572:d8c2d4f9
Show More
noncopying.py
44 lines | 866 B | text/x-python | PythonLexer
"""non-copying sends"""
import zmq
import numpy
n = 10
iface = 'inproc://pub'
ctx = zmq.Context()
p = ctx.socket(zmq.PUB)
p.bind(iface)
# connect 2 subs
s1 = ctx.socket(zmq.SUB)
s1.connect(iface)
s1.setsockopt(zmq.SUBSCRIBE, '')
s2 = ctx.socket(zmq.SUB)
s2.connect(iface)
s2.setsockopt(zmq.SUBSCRIBE, '')
A = numpy.random.random((1024,1024))
# send
p.send(A, copy=False)
# recv on 1 non-copy
msg1 = s1.recv(copy=False)
B1 = numpy.frombuffer(msg1.buffer, dtype=A.dtype).reshape(A.shape)
# recv on 2 copy
msg2 = s2.recv(copy=False)
B2 = numpy.frombuffer(buffer(msg2.bytes), dtype=A.dtype).reshape(A.shape)
print((B1==B2).all())
print((B1==A).all())
A[0][0] += 10
print("~")
# after changing A in-place, B1 changes too, proving non-copying sends
print((B1==A).all())
# but B2 is fixed, since it called the msg.bytes attr, which copies
print((B1==B2).all())