def run_pickled(pickled, *args, **kwargs): pickled, kwargs['impl'] = pickle.loads(base64.b64decode(pickled)) wrapper_kw = {} if 'wrapper' in kwargs: wrapper_kw['wrapper'] = dumps(kwargs.pop('wrapper')) queue = multiprocessing.Queue() proc = multiprocessing.Process(target=pickled_runner, args=(queue, pickled, args, kwargs), kwargs=wrapper_kw) proc.start() proc.join() return queue.get(timeout=5)
def run_pickled(pickled, *args, **kwargs): wrapper_kw = {} if 'wrapper' in kwargs: wrapper_kw['wrapper'] = dumps(kwargs.pop('wrapper')) queue = multiprocessing.Queue() proc = multiprocessing.Process(target=pickled_runner, args=(queue, pickled, args, kwargs), kwargs=wrapper_kw) proc.start() proc.join() if proc.exitcode != 0: raise SystemError('Pickle process exited abnormally.') try: return queue.get() except: return None
def testNestedClassObj(self): func = _gen_nested_yield_obj() obj_serial = base64.b64encode(dumps(func)) deserial = loads(base64.b64decode(obj_serial)) self.assertEqual(sum(deserial()(20)), sum(func()(20)))
def testNestedFunc(self): func = _gen_nested_fun() obj_serial = base64.b64encode(dumps(func)) deserial = loads(base64.b64decode(obj_serial)) self.assertEqual(deserial(20), func(20))
def testRangeObject(self): obj_serial = dumps(range(10)) deserial = loads(obj_serial) self.assertListEqual(list(range(10)), list(deserial))