1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import os
- import sys
- import warnings
- import time
- from multiprocessing import Pool
- from pathlib import Path
- root_path = Path(__file__).resolve().parent.parent
- sys.path.append(str(root_path))
- from config import config
- from models.common import log # 确保这个路径是正确的,或者调整它
- from single_case_eval import single_case_eval # 确保这个路径是正确的,或者调整它
- root_path = Path(__file__).resolve().parent.parent
- sys.path.append(str(root_path))
- log_path = config.LOG_PATH
- print(log_path)
- logger = log.get_logger(log_path)
- def main():
- # 忽略所有警告
- warnings.filterwarnings("ignore")
- data_path = config.PROCESSED_DATA_PATH
- if not data_path:
- logger.error("Config file missing 'processed_data_path' key.")
- return
- logger.info(f"[case:{data_path}] SINGLE_CASE_EVAL: Start.")
- t1 = time.time()
- subfolders = [f.name for f in os.scandir(data_path) if f.is_dir()]
- count = len(subfolders)
- logger.info(f"{count} subfolders found to process: {subfolders}")
- if not subfolders:
- logger.warning("No subfolders found to process.")
- return
- mode_label = "PGVIL" # 根据需要替换
- # single_case_eval(subfolders[0], mode_label)
- # 创建一个进程池
- with Pool(processes=min(count, os.cpu_count())) as pool:
- # 准备参数
- params = [(case_name, mode_label) for case_name in subfolders]
- try:
- # 使用进程池执行函数,这里的results没有用,是因为后边要组合成多用例报告评估用,现在还没想好,
- # 如果想要多用例报告评估,可以在此处修改
- results = pool.starmap(single_case_eval, params)
- except Exception as e:
- logger.error(f"An error occurred during processing: {e}", exc_info=True)
- return
- logger.info("所有子文件夹处理完成")
- t2 = time.time()
- logger.info(f"程序结束,执行时间:{int(t2 - t1)} s")
- logger.info(f"[case:{data_path}] SINGLE_CASE_EVAL: End.")
- if __name__ == "__main__":
- main()
|