diff options
| author | Philipp Hahn <phahn-oss@avm.de> | 2026-05-15 14:47:50 +0200 |
|---|---|---|
| committer | Nathan Chancellor <nathan@kernel.org> | 2026-05-27 16:47:51 -0700 |
| commit | c10ba5c9c62e2158cfa8a8be1f4c6fab67c799ec (patch) | |
| tree | cca584ae8d4fbee480dcbd4736886f7643fed09e /scripts | |
| parent | c919893eabb437d18dee3dddba6bc508bf1b1edd (diff) | |
run-clang-tools: run multiprocessing.Pool as context manager
`multiprocessing.pool.Pool()` should be used as a context manager so
Python can free its internal resources and do a proper cleanup.[1]
While at it move the code to read the `compiler_commands.json` so the
opened file can be closed before the sub-processes are fork()ed.
Link: https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool [1]
Signed-off-by: Philipp Hahn <phahn-oss@avm.de>
Link: https://patch.msgid.link/40180613bef84946c45d6fbeb4bb274573cd0beb.1778849135.git.phahn-oss@avm.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/clang-tools/run-clang-tools.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/scripts/clang-tools/run-clang-tools.py b/scripts/clang-tools/run-clang-tools.py index f31ffd09e1ea..e78be82aa693 100755 --- a/scripts/clang-tools/run-clang-tools.py +++ b/scripts/clang-tools/run-clang-tools.py @@ -79,14 +79,15 @@ def run_analysis(entry): def main(): - try: - args = parse_arguments() + args = parse_arguments() + + # Read JSON data into the datastore variable + with open(args.path) as f: + datastore = json.load(f) - lock = multiprocessing.Lock() - pool = multiprocessing.Pool(initializer=init, initargs=(lock, args)) - # Read JSON data into the datastore variable - with open(args.path, "r") as f: - datastore = json.load(f) + lock = multiprocessing.Lock() + try: + with multiprocessing.Pool(initializer=init, initargs=(lock, args)) as pool: pool.map(run_analysis, datastore) except BrokenPipeError: # Python flushes standard streams on exit; redirect remaining output |
