diff options
Diffstat (limited to 'pym/_emerge/TaskScheduler.py')
-rw-r--r-- | pym/_emerge/TaskScheduler.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/pym/_emerge/TaskScheduler.py b/pym/_emerge/TaskScheduler.py new file mode 100644 index 000000000..564f130aa --- /dev/null +++ b/pym/_emerge/TaskScheduler.py @@ -0,0 +1,21 @@ +from _emerge.QueueScheduler import QueueScheduler +from _emerge.SequentialTaskQueue import SequentialTaskQueue + +class TaskScheduler(object): + + """ + A simple way to handle scheduling of AsynchrousTask instances. Simply + add tasks and call run(). The run() method returns when no tasks remain. + """ + + def __init__(self, max_jobs=None, max_load=None): + self._queue = SequentialTaskQueue(max_jobs=max_jobs) + self._scheduler = QueueScheduler( + max_jobs=max_jobs, max_load=max_load) + self.sched_iface = self._scheduler.sched_iface + self.run = self._scheduler.run + self._scheduler.add(self._queue) + + def add(self, task): + self._queue.add(task) + |