summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/TaskScheduler.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/_emerge/TaskScheduler.py')
-rw-r--r--pym/_emerge/TaskScheduler.py21
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)
+