class documentation

A composite IWorker implementation.

Method __init__ No summary
Method do Perform some work in a worker created by createWorker.
Method grow Increase the the number of idle workers by n.
Method quit Stop doing work and shut down all idle workers.
Method shrink Decrease the number of idle workers by n.
Method statistics Gather information on the current status of this Team.
Method _coordinateThisTask Select a worker to dispatch to, either an idle one or a new one, and perform it.
Method _quitIdlers The implmentation of shrink, performed by the coordinator worker.
Method _recycleWorker Called only from coordinator.
Instance Variable _busyCount the number of workers currently busy.
Instance Variable _coordinator the IExclusiveWorker coordinating access to this Team's internal resources.
Instance Variable _createWorker a callable that will create new workers.
Instance Variable _idle a set of idle workers.
Instance Variable _logException a 0-argument callable called in an exception context when there is an unhandled error from a task passed to Team.do
Instance Variable _pending a deque of tasks - that is, 0-argument callables passed to Team.do - that are outstanding.
Instance Variable _quit A Quit flag indicating whether this Team has been quit yet. This may be set by an arbitrary thread since Team.quit may be called from anywhere.
Instance Variable _shouldQuitCoordinator A flag indicating that the coordinator should be quit at the next available opportunity. Unlike Team._quit, this flag is only set by the coordinator.
Instance Variable _toShrink the number of workers to shrink this Team by at the next available opportunity; set in the coordinator.
def __init__(self, coordinator: IExclusiveWorker, createWorker: Callable[[], Optional[IWorker]], logException: Callable[[], None]): (source)
Parameters
coordinator:IExclusiveWorkeran IExclusiveWorker which will coordinate access to resources on this Team; that is to say, an IExclusiveWorker whose do method ensures that its given work will be executed in a mutually exclusive context, not in parallel with other work enqueued by do (although possibly in parallel with the caller).
createWorker:Callable[[], Optional[IWorker]]A 0-argument callable that will create an IWorker to perform work.
logException:Callable[[], None]A 0-argument callable called in an exception context when the work passed to do raises an exception.
def do(self, task: Callable[[], None]): (source)

Perform some work in a worker created by createWorker.

Parameters
task:Callable[[], None]the callable to run
def grow(self, n: int): (source)

Increase the the number of idle workers by n.

Parameters
n:intThe number of new idle workers to create.
def quit(self): (source)

Stop doing work and shut down all idle workers.

def shrink(self, n: Optional[int] = None): (source)

Decrease the number of idle workers by n.

Parameters
n:int or NoneThe number of idle workers to shut down, or None (or unspecified) to shut down all workers.
def statistics(self) -> Statistics: (source)

Gather information on the current status of this Team.

Returns
Statisticsa Statistics describing the current state of this Team.
def _coordinateThisTask(self, task: Callable[..., object]): (source)

Select a worker to dispatch to, either an idle one or a new one, and perform it.

This method should run on the coordinator worker.

Parameters
task:0-argument callablethe task to dispatch
def _quitIdlers(self, n: Optional[int] = None): (source)

The implmentation of shrink, performed by the coordinator worker.

Parameters
n:Optional[int]see Team.shrink
def _recycleWorker(self, worker: IWorker): (source)

Called only from coordinator.

Recycle the given worker into the idle pool.

Parameters
worker:IWorkera worker created by createWorker and now idle.
_busyCount: int = (source)

the number of workers currently busy.

_coordinator = (source)

the IExclusiveWorker coordinating access to this Team's internal resources.

_createWorker = (source)

a callable that will create new workers.

a set of idle workers.

_logException = (source)

a 0-argument callable called in an exception context when there is an unhandled error from a task passed to Team.do

a deque of tasks - that is, 0-argument callables passed to Team.do - that are outstanding.

A Quit flag indicating whether this Team has been quit yet. This may be set by an arbitrary thread since Team.quit may be called from anywhere.

_shouldQuitCoordinator: bool = (source)

A flag indicating that the coordinator should be quit at the next available opportunity. Unlike Team._quit, this flag is only set by the coordinator.

_toShrink: int = (source)

the number of workers to shrink this Team by at the next available opportunity; set in the coordinator.