From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1RvJ9Z-0007S2-56 for garchives@archives.gentoo.org; Thu, 09 Feb 2012 01:50:29 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 60BE5E0710; Thu, 9 Feb 2012 01:50:21 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 12B7EE0710 for ; Thu, 9 Feb 2012 01:50:20 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 4743E1B4038 for ; Thu, 9 Feb 2012 01:50:20 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 70C6EE5400 for ; Thu, 9 Feb 2012 01:50:18 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <3ea7f3dc381ea2b61604e6cedb82b4847537317c.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/SequentialTaskQueue.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 3ea7f3dc381ea2b61604e6cedb82b4847537317c Date: Thu, 9 Feb 2012 01:50:18 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: d8a88b50-5cc8-4acf-bcab-fe58ac6b427a X-Archives-Hash: 83db6fa4aa0cb8562b265b1e7d6c6c1d commit: 3ea7f3dc381ea2b61604e6cedb82b4847537317c Author: Zac Medico gentoo org> AuthorDate: Thu Feb 9 01:49:56 2012 +0000 Commit: Zac Medico gentoo org> CommitDate: Thu Feb 9 01:49:56 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D3ea7f3dc SequentialTaskQueue: use finally for _scheduling Also, remove unecessary _dirty flag. --- pym/_emerge/SequentialTaskQueue.py | 46 ++++++++++--------------------= ----- 1 files changed, 13 insertions(+), 33 deletions(-) diff --git a/pym/_emerge/SequentialTaskQueue.py b/pym/_emerge/SequentialT= askQueue.py index 88ac844..3cd56d2 100644 --- a/pym/_emerge/SequentialTaskQueue.py +++ b/pym/_emerge/SequentialTaskQueue.py @@ -7,7 +7,7 @@ from collections import deque class SequentialTaskQueue(SlotObject): =20 __slots__ =3D ("max_jobs", "running_tasks") + \ - ("_dirty", "_scheduling", "_task_queue") + ("_scheduling", "_task_queue") =20 def __init__(self, **kwargs): SlotObject.__init__(self, **kwargs) @@ -15,52 +15,34 @@ class SequentialTaskQueue(SlotObject): self.running_tasks =3D set() if self.max_jobs is None: self.max_jobs =3D 1 - self._dirty =3D True =20 def add(self, task): self._task_queue.append(task) - self._dirty =3D True self.schedule() =20 def addFront(self, task): self._task_queue.appendleft(task) - self._dirty =3D True self.schedule() =20 def schedule(self): =20 - if not self._dirty: - return False - - if not self: - return False - if self._scheduling: # Ignore any recursive schedule() calls triggered via # self._task_exit(). - return False + return =20 self._scheduling =3D True - - task_queue =3D self._task_queue - running_tasks =3D self.running_tasks - max_jobs =3D self.max_jobs - state_changed =3D False - - while task_queue and \ - (max_jobs is True or len(running_tasks) < max_jobs): - task =3D task_queue.popleft() - cancelled =3D getattr(task, "cancelled", None) - if not cancelled: - running_tasks.add(task) - task.addExitListener(self._task_exit) - task.start() - state_changed =3D True - - self._dirty =3D False - self._scheduling =3D False - - return state_changed + try: + while self._task_queue and (self.max_jobs is True or + len(self.running_tasks) < self.max_jobs): + task =3D self._task_queue.popleft() + cancelled =3D getattr(task, "cancelled", None) + if not cancelled: + self.running_tasks.add(task) + task.addExitListener(self._task_exit) + task.start() + finally: + self._scheduling =3D False =20 def _task_exit(self, task): """ @@ -70,7 +52,6 @@ class SequentialTaskQueue(SlotObject): """ self.running_tasks.remove(task) if self._task_queue: - self._dirty =3D True self.schedule() =20 def clear(self): @@ -80,7 +61,6 @@ class SequentialTaskQueue(SlotObject): task =3D running_tasks.pop() task.removeExitListener(self._task_exit) task.cancel() - self._dirty =3D False =20 def __bool__(self): return bool(self._task_queue or self.running_tasks)