diff --git a/debug/accuracy_tools/api_accuracy_checker/dump/info_dump.py b/debug/accuracy_tools/api_accuracy_checker/dump/info_dump.py index c71ac649c3e3f78f87c72d551c3a30f72bd08781..e90b1f988bb57005c8c409962fc329e69e3c9f62 100644 --- a/debug/accuracy_tools/api_accuracy_checker/dump/info_dump.py +++ b/debug/accuracy_tools/api_accuracy_checker/dump/info_dump.py @@ -2,6 +2,7 @@ import fcntl import json import os import threading +import multiprocessing from api_accuracy_checker.dump.api_info import ForwardAPIInfo, BackwardAPIInfo from api_accuracy_checker.common.utils import check_file_or_directory_path, initialize_save_path, create_directory @@ -12,6 +13,7 @@ from api_accuracy_checker.common.config import msCheckerConfig from ptdbg_ascend.src.python.ptdbg_ascend.common.file_check_util import FileOpen, FileCheckConst, FileChecker, change_mode lock = threading.Lock() +proc_lock = multiprocessing.Lock() def write_api_info_json(api_info): @@ -36,11 +38,12 @@ def write_api_info_json(api_info): def write_json(file_path, data, indent=None): check_file_or_directory_path(os.path.dirname(file_path), True) + proc_lock.acquire() + lock.acquire() if not os.path.exists(file_path): with FileOpen(file_path, 'w') as f: f.write("{\n}") change_mode(file_path, FileCheckConst.DATA_FILE_AUTHORITY) - lock.acquire() with FileOpen(file_path, 'a+') as f: fcntl.flock(f, fcntl.LOCK_EX) try: @@ -57,6 +60,7 @@ def write_json(file_path, data, indent=None): finally: fcntl.flock(f, fcntl.LOCK_UN) lock.release() + proc_lock.release() def initialize_output_json():