evaluate_main.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import sys
  5. import warnings
  6. import time
  7. from multiprocessing import Pool
  8. from pathlib import Path
  9. root_path = Path(__file__).resolve().parent.parent
  10. sys.path.append(str(root_path))
  11. from config import config
  12. from models.common import log # 确保这个路径是正确的,或者调整它
  13. from single_case_eval import single_case_eval # 确保这个路径是正确的,或者调整它
  14. root_path = Path(__file__).resolve().parent.parent
  15. sys.path.append(str(root_path))
  16. log_path = config.LOG_PATH
  17. print(log_path)
  18. logger = log.get_logger(log_path)
  19. def main():
  20. # 忽略所有警告
  21. warnings.filterwarnings("ignore")
  22. data_path = config.PROCESSED_DATA_PATH
  23. if not data_path:
  24. logger.error("Config file missing 'processed_data_path' key.")
  25. return
  26. logger.info(f"[case:{data_path}] SINGLE_CASE_EVAL: Start.")
  27. t1 = time.time()
  28. subfolders = [f.name for f in os.scandir(data_path) if f.is_dir()]
  29. count = len(subfolders)
  30. logger.info(f"{count} subfolders found to process: {subfolders}")
  31. if not subfolders:
  32. logger.warning("No subfolders found to process.")
  33. return
  34. mode_label = "PGVIL" # 根据需要替换
  35. # single_case_eval(subfolders[0], mode_label)
  36. # 创建一个进程池
  37. with Pool(processes=min(count, os.cpu_count())) as pool:
  38. # 准备参数
  39. params = [(case_name, mode_label) for case_name in subfolders]
  40. try:
  41. # 使用进程池执行函数,这里的results没有用,是因为后边要组合成多用例报告评估用,现在还没想好,
  42. # 如果想要多用例报告评估,可以在此处修改
  43. results = pool.starmap(single_case_eval, params)
  44. except Exception as e:
  45. logger.error(f"An error occurred during processing: {e}", exc_info=True)
  46. return
  47. logger.info("所有子文件夹处理完成")
  48. t2 = time.time()
  49. logger.info(f"程序结束,执行时间:{int(t2 - t1)} s")
  50. logger.info(f"[case:{data_path}] SINGLE_CASE_EVAL: End.")
  51. if __name__ == "__main__":
  52. main()