##// END OF EJS Templates
add EvalFormatter for batch system (PBS) launcher templates...
add EvalFormatter for batch system (PBS) launcher templates parallel docs now reflect use of Formatter instead of Itpl.

File last commit:

r3609:8d078bcc
r4004:551fa498
Show More
noncopying.py
44 lines | 861 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()