From 63de300094b90fb9c9a629a13e936c36cabc9781 Mon Sep 17 00:00:00 2001 From: Chih-Hung Hsieh Date: Fri, 28 Oct 2016 10:53:34 -0700 Subject: [PATCH] Do not use multiprocessing.Pool when --processes=1. Purpose of this change is not to save some execution time, but to avoid forking another process. In other applications that use a wrapper to call this python script, it is difficult to get overwritten file I/O functions work in a subprocess. So the wrapper will call warn.py with --processes=1. Test: run "warn.py --processes=1 build.log" Change-Id: I5998d5c70d81a456c86eb4002f444a4a60135477 --- tools/warn.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tools/warn.py b/tools/warn.py index 45ffda0b1..355d12019 100755 --- a/tools/warn.py +++ b/tools/warn.py @@ -2096,13 +2096,17 @@ def classify_warnings(lines): def parallel_classify_warnings(warning_lines): """Classify all warning lines with num_cpu parallel processes.""" num_cpu = args.processes - groups = [[] for x in range(num_cpu)] - i = 0 - for x in warning_lines: - groups[i].append(x) - i = (i + 1) % num_cpu - pool = multiprocessing.Pool(num_cpu) - group_results = pool.map(classify_warnings, groups) + if num_cpu > 1: + groups = [[] for x in range(num_cpu)] + i = 0 + for x in warning_lines: + groups[i].append(x) + i = (i + 1) % num_cpu + pool = multiprocessing.Pool(num_cpu) + group_results = pool.map(classify_warnings, groups) + else: + group_results = [classify_warnings(warning_lines)] + for result in group_results: for line, pattern_idx, project_idx in result: pattern = warn_patterns[pattern_idx]