Beispiel #1
0
class SocketPool(object):

    def __init__(self):
        self.pool = Pool(1000)
        self.pool.start()

    def listen(self, socket):
        while True:
            socket.recv()

    def add_handler(self, socket):
        if self.pool.full():
            raise Exception("At maximum pool size")
        else:
            self.pool.spawn(self.listen, socket)

    def shutdown(self):
        self.pool.kill()
Beispiel #2
0
class Pool(object):
  '''
  A wrapper around ``Pool`` objects in ``multiprocessing`` and ``mpi4py``. As of now,
  this class has a single method, ``map``, which invokes the corresponding method in
  either the ``multiprocessing`` or ``mpi4py`` pool objects.
  
  '''
  def __init__(self, **pool_kwargs):
  
    try:
      self._pool = MPIPool(**FilterKwargs(MPIPool, pool_kwargs))
      self.MPI = True
    except (ImportError, ValueError):
      self._pool = MultiPool(**FilterKwargs(MultiPool, pool_kwargs))
      self.MPI = False
    
    if self.MPI:
      if not self._pool.is_master():
        
        try:
          self._pool.wait()
        except Exception as e:
          self._pool.kill(e)
          
        sys.exit(0)
  
  def map(self, f, x, args = (), kwargs = {}): 
    '''
    
    '''
    if len(args) or len(kwargs):
      w = Wrap(f, *args, **kwargs)  
      return self._pool.map(w, x)
    else:
      return self._pool.map(f, x)
  
  @property
  def size(self):
    return self._pool.size
  
  def close(self):
    self._pool.close()
    
Beispiel #3
0
class Pool(object):
    '''
  A wrapper around ``Pool`` objects in ``multiprocessing`` and ``mpi4py``. As of now,
  this class has a single method, ``map``, which invokes the corresponding method in
  either the ``multiprocessing`` or ``mpi4py`` pool objects.
  
  '''
    def __init__(self, **pool_kwargs):

        try:
            self._pool = MPIPool(**FilterKwargs(MPIPool, pool_kwargs))
            self.MPI = True
        except (ImportError, ValueError):
            self._pool = MultiPool(**FilterKwargs(MultiPool, pool_kwargs))
            self.MPI = False

        if self.MPI:
            if not self._pool.is_master():

                try:
                    self._pool.wait()
                except Exception as e:
                    self._pool.kill(e)

                sys.exit(0)

    def map(self, f, x, args=(), kwargs={}):
        '''
    
    '''
        if len(args) or len(kwargs):
            w = Wrap(f, *args, **kwargs)
            return self._pool.map(w, x)
        else:
            return self._pool.map(f, x)

    @property
    def size(self):
        return self._pool.size

    def close(self):
        self._pool.close()