From 5f73c217cc110f28ecc664643899808004239a02 Mon Sep 17 00:00:00 2001 From: Hal Canary Date: Mon, 5 Feb 2018 11:36:25 -0500 Subject: SkQP: use multiprocessing over threading BUG=skia:7579 NOTRY=true Change-Id: I4c7d2331e88171943f724592eb1481a5ea41b0ba Reviewed-on: https://skia-review.googlesource.com/103700 Reviewed-by: Hal Canary Commit-Queue: Hal Canary --- tools/skqp/download_model | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'tools/skqp') diff --git a/tools/skqp/download_model b/tools/skqp/download_model index 90a46256f6..c18ebfa428 100755 --- a/tools/skqp/download_model +++ b/tools/skqp/download_model @@ -5,10 +5,10 @@ # found in the LICENSE file. import hashlib +import multiprocessing import os import shutil import sys -import threading import tempfile import urllib2 @@ -46,7 +46,6 @@ def main(): os.chdir(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, 'platform_tools', 'android', 'apps', 'skqp', 'src', 'main', 'assets')) - sys.stderr.write('\n 0 / ???? ') file_list_file = tmp('files_') with open('files.checksum', 'r') as f: md5 = f.read().strip() @@ -57,18 +56,12 @@ def main(): for line in f: md5, path = line.strip().split(';', 1) records.append((md5, path)) - threads = set() - sys.stderr.write('\r 0 / %d ' % len(records)) - for i, record in enumerate(records): - t = threading.Thread(target=download, args=record) - t.start() - threads.add(t) - left = -1 - while left != 0: - count = sum(1 for t in threading.enumerate() if t in threads) - if left != count: - left = count - sys.stderr.write('\r %4d / %d ' % (len(records) - left, len(records))) + sys.stderr.write('Downloading %d files.\n' % len(records)) + pool = multiprocessing.Pool(processes=multiprocessing.cpu_count() * 2) + for record in records: + pool.apply_async(download, record, callback=lambda x: sys.stderr.write('.')) + pool.close() + pool.join() sys.stderr.write('\n') if __name__ == '__main__': -- cgit v1.2.3