mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Do not allow new jobs to start when all cores are used. Also Fix #6130 (Conversion details show wrong conversion in title)
This commit is contained in:
parent
7c7f5ec119
commit
e9c1aa873c
@ -175,6 +175,7 @@ class JobManager(QAbstractTableModel):
|
|||||||
self.jobs.append(job)
|
self.jobs.append(job)
|
||||||
self.jobs.sort()
|
self.jobs.sort()
|
||||||
self.job_added.emit(len(self.unfinished_jobs()))
|
self.job_added.emit(len(self.unfinished_jobs()))
|
||||||
|
self.layoutChanged.emit()
|
||||||
|
|
||||||
def done_jobs(self):
|
def done_jobs(self):
|
||||||
return [j for j in self.jobs if j.is_finished]
|
return [j for j in self.jobs if j.is_finished]
|
||||||
|
@ -103,7 +103,7 @@ class Server(Thread):
|
|||||||
authkey=self.auth_key, backlog=4)
|
authkey=self.auth_key, backlog=4)
|
||||||
self.add_jobs_queue, self.changed_jobs_queue = Queue(), Queue()
|
self.add_jobs_queue, self.changed_jobs_queue = Queue(), Queue()
|
||||||
self.kill_queue = Queue()
|
self.kill_queue = Queue()
|
||||||
self.waiting_jobs, self.processing_jobs = [], deque()
|
self.waiting_jobs = []
|
||||||
self.pool, self.workers = deque(), deque()
|
self.pool, self.workers = deque(), deque()
|
||||||
self.launched_worker_count = 0
|
self.launched_worker_count = 0
|
||||||
self._worker_launch_lock = RLock()
|
self._worker_launch_lock = RLock()
|
||||||
@ -227,8 +227,15 @@ class Server(Thread):
|
|||||||
|
|
||||||
def suitable_waiting_job(self):
|
def suitable_waiting_job(self):
|
||||||
available_workers = len(self.pool)
|
available_workers = len(self.pool)
|
||||||
if available_workers == 0:
|
for worker in self.workers:
|
||||||
return None
|
job = worker.job
|
||||||
|
if job.core_usage == -1:
|
||||||
|
available_workers = 0
|
||||||
|
elif job.core_usage > 1:
|
||||||
|
available_workers -= job.core_usage - 1
|
||||||
|
if available_workers < 1:
|
||||||
|
return None
|
||||||
|
|
||||||
for i, job in enumerate(self.waiting_jobs):
|
for i, job in enumerate(self.waiting_jobs):
|
||||||
if job.core_usage == -1:
|
if job.core_usage == -1:
|
||||||
if available_workers >= self.pool_size:
|
if available_workers >= self.pool_size:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user