have_lock = True
self.job_manager.lock.acquire ()
try:
- while self.job_manager.pause == 0 and not self.job_manager.do_quit:
+ while (self.job_manager.pause == 0
+ and not self.job_manager.do_quit
+ and (len (self.job_manager.threads)
+ <= self.job_manager.num_threads)):
try:
_, key, job = heapq.heappop (self.job_manager.queue)
except IndexError:
self.started = started
# The maximum number of threads to use for executing jobs.
- self.num_threads = num_threads
+ self._num_threads = num_threads
# List of jobs (priority, key, job) that are queued for
# execution.
self.lock.release()
return wrapper
+ def get_num_threads(self):
+ return self._num_threads
+ def set_num_threads(self, value):
+ self._num_threads = value
+ self.tickle ()
+ num_threads = property(get_num_threads, set_num_threads)
+
@_lock
def start(self):
"""