mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
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>
This commit is contained in:
parent
c919893eab
commit
c10ba5c9c6
|
|
@ -79,14 +79,15 @@ def run_analysis(entry):
|
|||
|
||||
|
||||
def main():
|
||||
try:
|
||||
args = parse_arguments()
|
||||
args = parse_arguments()
|
||||
|
||||
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)
|
||||
# Read JSON data into the datastore variable
|
||||
with open(args.path) 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user