From patchwork Mon Dec 27 16:01:29 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Goldish X-Patchwork-Id: 434341 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oBRKCV9R025997 for ; Mon, 27 Dec 2010 20:16:51 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754324Ab0L0QCF (ORCPT ); Mon, 27 Dec 2010 11:02:05 -0500 Received: from mx1.redhat.com ([209.132.183.28]:47301 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754320Ab0L0QCD (ORCPT ); Mon, 27 Dec 2010 11:02:03 -0500 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oBRG22Wu029405 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 27 Dec 2010 11:02:03 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id oBRG22B3023876; Mon, 27 Dec 2010 11:02:02 -0500 Received: from moof.tlv.redhat.com (dhcp-1-185.tlv.redhat.com [10.35.1.185]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id oBRG1rFo017175; Mon, 27 Dec 2010 11:02:01 -0500 From: Michael Goldish To: autotest@test.kernel.org, kvm@vger.kernel.org Cc: Michael Goldish Subject: [KVM-AUTOTEST PATCH 02/28] KVM test: kvm_utils.py: add a convenience function to run functions in parallel Date: Mon, 27 Dec 2010 18:01:29 +0200 Message-Id: <1293465715-16599-2-git-send-email-mgoldish@redhat.com> In-Reply-To: <1293465715-16599-1-git-send-email-mgoldish@redhat.com> References: <1293465715-16599-1-git-send-email-mgoldish@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Mon, 27 Dec 2010 20:16:51 +0000 (UTC) diff --git a/client/tests/kvm/kvm_utils.py b/client/tests/kvm/kvm_utils.py index 5d79112..57c9951 100644 --- a/client/tests/kvm/kvm_utils.py +++ b/client/tests/kvm/kvm_utils.py @@ -1046,7 +1046,7 @@ def get_vendor_from_pci_id(pci_id): class Thread(threading.Thread): """ - Runs a test in the background thread. + Run a function in a background thread. """ def __init__(self, target, args=(), kwargs={}): """ @@ -1102,6 +1102,28 @@ class Thread(threading.Thread): self._retval = None +def parallel(targets): + """ + Run multiple functions in parallel. + + @param targets: A sequence of tuples or functions. If it's a sequence of + tuples, each tuple will be interpreted as (target, args, kwargs) or + (target, args) or (target,) depending on its length. If it's a + sequence of functions, the functions will be called without + arguments. + @return: A list of the values returned by the functions called. + """ + threads = [] + for target in targets: + if isinstance(target, tuple) or isinstance(target, list): + t = Thread(*target) + else: + t = Thread(target) + threads.append(t) + t.start() + return [t.join() for t in threads] + + class KvmLoggingConfig(logging_config.LoggingConfig): """ Used with the sole purpose of providing convenient logging setup