Пример #1
0
 def testPickle5(self):
     comm = self.COMM
     rank = comm.Get_rank()
     pickle = self.pickle
     protocols = list(range(-2, pickle.PROTOCOL + 1))
     for protocol in [None] + protocols:
         pickle.PROTOCOL = protocol
         for threshold in (-1, 0, 64, 256):
             pickle.THRESHOLD = threshold
             for slen in (0, 32, 64, 128, 256, 512):
                 sobj = numpy.empty(slen, dtype='i')
                 sobj.fill(rank)
                 #
                 robj = comm.sendrecv(sobj, rank, 42, None, rank, 42)
                 self.assertTrue(numpy.all(sobj == robj))
                 #
                 data, bufs = pickle.dumps(sobj)
                 robj = pickle.loads(data, bufs)
                 self.assertTrue(numpy.all(sobj == robj))
                 if protocol is None:
                     protocol = MPI.Pickle().PROTOCOL
                 if protocol < 0:
                     protocol = pkl5._PROTOCOL
                 if protocol >= 5 and sobj.nbytes >= threshold:
                     self.assertEqual(len(bufs), 1)
                 else:
                     self.assertEqual(len(bufs), 0)