diff options
| author | Micah Anderson <micah@riseup.net> | 2014-11-11 11:52:45 -0500 | 
|---|---|---|
| committer | Micah Anderson <micah@riseup.net> | 2014-11-11 11:52:45 -0500 | 
| commit | 44be832c5708baadd146cb954befbc3dcad8d463 (patch) | |
| tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /examples/serialization | |
| parent | 76755110103988258ec37afbb4c022f7ac3ddf54 (diff) | |
prepare for upgrade to new upstream
Diffstat (limited to 'examples/serialization')
| -rw-r--r-- | examples/serialization/serialsocket.py | 74 | 
1 files changed, 0 insertions, 74 deletions
| diff --git a/examples/serialization/serialsocket.py b/examples/serialization/serialsocket.py deleted file mode 100644 index 7329bb9..0000000 --- a/examples/serialization/serialsocket.py +++ /dev/null @@ -1,74 +0,0 @@ -"""A Socket subclass that adds some serialization methods.""" - -import zlib -import pickle - -import numpy - -import zmq - -class SerializingSocket(zmq.Socket): -    """A class with some extra serialization methods -     -    send_zipped_pickle is just like send_pyobj, but uses -    zlib to compress the stream before sending. -     -    send_array sends numpy arrays with metadata necessary -    for reconstructing the array on the other side (dtype,shape). -    """ -     -    def send_zipped_pickle(self, obj, flags=0, protocol=-1): -        """pack and compress an object with pickle and zlib.""" -        pobj = pickle.dumps(obj, protocol) -        zobj = zlib.compress(pobj) -        print('zipped pickle is %i bytes' % len(zobj)) -        return self.send(zobj, flags=flags) -     -    def recv_zipped_pickle(self, flags=0): -        """reconstruct a Python object sent with zipped_pickle""" -        zobj = self.recv(flags) -        pobj = zlib.decompress(zobj) -        return pickle.loads(pobj) - -    def send_array(self, A, flags=0, copy=True, track=False): -        """send a numpy array with metadata""" -        md = dict( -            dtype = str(A.dtype), -            shape = A.shape, -        ) -        self.send_json(md, flags|zmq.SNDMORE) -        return self.send(A, flags, copy=copy, track=track) - -    def recv_array(self, flags=0, copy=True, track=False): -        """recv a numpy array""" -        md = self.recv_json(flags=flags) -        msg = self.recv(flags=flags, copy=copy, track=track) -        A = numpy.frombuffer(msg, dtype=md['dtype']) -        return A.reshape(md['shape']) - -class SerializingContext(zmq.Context): -    _socket_class = SerializingSocket - -def main(): -    ctx = SerializingContext() -    req = ctx.socket(zmq.REQ) -    rep = ctx.socket(zmq.REP) -     -    rep.bind('inproc://a') -    req.connect('inproc://a') -    A = numpy.ones((1024,1024)) -    print ("Array is %i bytes" % (len(A) * 8)) -     -    # send/recv with pickle+zip -    req.send_zipped_pickle(A) -    B = rep.recv_zipped_pickle() -    # now try non-copying version -    rep.send_array(A, copy=False) -    C = req.recv_array(copy=False) -    print ("Checking zipped pickle...") -    print ("Okay" if (A==B).all() else "Failed") -    print ("Checking send_array...") -    print ("Okay" if (C==B).all() else "Failed") - -if __name__ == '__main__': -    main()
\ No newline at end of file | 
