def __init__(self, *args, **kwds): """\nNOTE: if number of nodes is not given, will default to 1. If source is not given, will attempt to minimially use TemporaryFiles. If workdir is not given, will default to scheduler's workdir or $WORKDIR. If scheduler is not given, will default to only run on the current node. If timeout is not given, will default to scheduler's timelimit or INF. For more details, see the docstrings for the "map" method, or the man page for the associated launcher (e.g mpirun, mpiexec). """ AbstractWorkerPool.__init__(self, *args, **kwds) self.scheduler = kwds.get('scheduler', None) self.scatter = True #bool(kwds.get('scatter', True)) self.source = bool(kwds.get('source', False)) self.workdir = kwds.get('workdir', None) self.timeout = kwds.get('timeout', None) if self.timeout == None: if self.scheduler: from pyina.tools import isoseconds self.timeout = isoseconds(self.scheduler.timelimit) else: from numpy import inf self.timeout = inf #XXX: better than defaults.timelimit ? elif isinstance(self.timeout, str): from pyina.tools import isoseconds self.timeout = isoseconds(self.timeout) if self.workdir == None: if self.scheduler: self.workdir = self.scheduler.workdir else: self.workdir = os.environ.get('WORKDIR', os.path.curdir) self.workdir = os.path.abspath(self.workdir) return