def __init__( self, async_evaluators=None, poolsize=4, load_factor=0, loop=None, async_language_session_class=WolframLanguageAsyncSession, **kwargs ): super().__init__(loop) if poolsize <= 0: raise ValueError("Invalid pool size value %i. Expecting a positive integer." % i) self._queue = asyncio.Queue(load_factor * poolsize, loop=self._loop) self.async_language_session_class = async_language_session_class self._evaluators = set() if async_evaluators is None or isinstance(async_evaluators, six.string_types): for _ in range(poolsize): self._add_evaluator(async_evaluators, **kwargs) else: if not is_iterable(async_evaluators): async_evaluators = itertools.repeat(async_evaluators) for evaluator in itertools.cycle(async_evaluators): if len(self._evaluators) >= poolsize: break self._add_evaluator(evaluator) self._started_tasks = [] self._pending_init_tasks = () self.last = 0 self.eval_count = 0 self.requestedsize = poolsize
def encode(serializer, o): if is_iterable(o): return serializer.serialize_iterable(map(serializer.encode, o), length=safe_len(o)) if serializer.allow_external_objects: return serializer.serialize_external_object(o) raise NotImplementedError('Cannot serialize object of class %s' % o.__class__)