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
This commit is contained in:
parent
526ddfb172
commit
63de300094
1 changed files with 11 additions and 7 deletions
|
@ -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]
|
||||
|
|
Loading…
Reference in a new issue