blob: 83c0cbe9650b42cedcfe33dcf73d53c97b8704f9 [file] [log] [blame]
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
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.clear = self._scheduler.clear
self._scheduler.add(self._queue)
def add(self, task):
self._queue.add(task)