[Autotest] making /utils py3 compatible

This will allow unittests to by run in python3, thus allowing other
modules to be tested in py3 when migrating.

BUG=chromium:990593
TEST=Ran a unittest in python3 and it worked, python3 -m py_compile

Change-Id: Idd8bae0c4157cdbd6c58b2497b1938b72a62031f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2324811
Reviewed-by: Greg Edelston <gredelston@google.com>
Reviewed-by: Congbin Guo <guocb@chromium.org>
Tested-by: Derek Beckett <dbeckett@chromium.org>
Commit-Queue: Derek Beckett <dbeckett@chromium.org>
diff --git a/utils/parallel.py b/utils/parallel.py
index 00b2bf9..6a03abf 100644
--- a/utils/parallel.py
+++ b/utils/parallel.py
@@ -1,4 +1,10 @@
+# Lint as: python2, python3
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
 import os, sys
+import six
+from six.moves import range
 
 
 class ParallelError(Exception):
@@ -31,9 +37,9 @@
                 functions[fn] = set()
 
         dependents = {}
-        for fn, deps in functions.iteritems():
+        for fn, deps in six.iteritems(functions):
             dependents[fn] = []
-        for fn, deps in functions.iteritems():
+        for fn, deps in six.iteritems(functions):
             for dep in deps:
                 dependents[dep].append(fn)
 
@@ -55,7 +61,7 @@
 
 
     def run_until_completion(self):
-        for fn, deps in self.functions.iteritems():
+        for fn, deps in six.iteritems(self.functions):
             if len(deps) == 0:
                 self.ready_to_run.append(fn)
 
@@ -63,7 +69,7 @@
         while len(self.pid_map) > 0 or len(self.ready_to_run) > 0:
             max_allowed = self.max_procs - len(self.pid_map)
             max_able = len(self.ready_to_run)
-            for i in xrange(min(max_allowed, max_able)):
+            for i in range(min(max_allowed, max_able)):
                 self._run(self.ready_to_run.pop())
 
             # Handle one proc that's finished.