Runtime improvements in Runner.py by using deques by default (python >= 2.4)

This commit is contained in:
Thomas Nagy 2014-01-02 23:35:17 +01:00
parent 5fc835639e
commit 2f7d561cb0
No known key found for this signature in database
GPG Key ID: 67A565EDFDF90E64
2 changed files with 7 additions and 5 deletions

View File

@ -114,10 +114,10 @@ class Parallel(object):
Instance of :py:class:`waflib.Build.BuildContext`
"""
self.outstanding = []
self.outstanding = Utils.deque()
"""List of :py:class:`waflib.Task.TaskBase` that may be ready to be executed"""
self.frozen = []
self.frozen = Utils.deque()
"""List of :py:class:`waflib.Task.TaskBase` that cannot be executed immediately"""
self.out = Queue(0)
@ -149,7 +149,7 @@ class Parallel(object):
"""
if not self.outstanding:
return None
return self.outstanding.pop(0)
return self.outstanding.popleft()
def postpone(self, tsk):
"""
@ -159,7 +159,7 @@ class Parallel(object):
:type tsk: :py:class:`waflib.Task.TaskBase`
"""
if random.randint(0, 1):
self.frozen.insert(0, tsk)
self.frozen.appendleft(tsk)
else:
self.frozen.append(tsk)
@ -193,7 +193,7 @@ class Parallel(object):
if self.frozen:
self.outstanding += self.frozen
self.frozen = []
self.frozen = Utils.deque()
elif not self.count:
self.outstanding.extend(next(self.biter))
self.total = self.bld.total()

View File

@ -19,6 +19,8 @@ except ImportError:
"""A deque for Python 2.3 which does not have one"""
def popleft(self):
return self.pop(0)
def appendleft(self, x):
sefl.insert(0, x)
try:
import _winreg as winreg
except ImportError: