crosperf: migration to python 3

This patch migrates crosperf and its utils to python 3.

TEST=Passed presubmit check; tested with simple experiment locally.
BUG=chromium:1011676

Change-Id: Ib2a9f9c7cf6a1bb1d0b42a1dd3d9e3cbb4d70a36
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2003796
Tested-by: Zhizhou Yang <zhizhouy@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Caroline Tice <cmtice@chromium.org>
Commit-Queue: Zhizhou Yang <zhizhouy@google.com>
Auto-Submit: Zhizhou Yang <zhizhouy@google.com>
diff --git a/lock_machine.py b/lock_machine.py
index 87230b7..244edfb 100755
--- a/lock_machine.py
+++ b/lock_machine.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 #
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
@@ -298,7 +298,7 @@
         cros_machine = cros_machine + '.cros'
 
     self.machines = [
-        m for m in self.machines if m != cros_machine and m != machine
+        m for m in self.machines if m not in (cros_machine, machine)
     ]
 
   def CheckMachineLocks(self, machine_states, cmd):
@@ -316,7 +316,7 @@
     Raises:
       DontOwnLock: The lock on a requested machine is owned by someone else.
     """
-    for k, state in machine_states.iteritems():
+    for k, state in machine_states.items():
       if cmd == 'unlock':
         if not state['locked']:
           self.logger.LogWarning('Attempt to unlock already unlocked machine '