resource_manager.py 855 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # @FileName :resource_manager.py
  4. # @Time :2025/4/29 11:06
  5. # @Author :David
  6. # @Company: shenyang JY
  7. from multiprocessing import cpu_count, Manager
  8. class ResourceController:
  9. def __init__(self, max_workers=None, gpu_list=None):
  10. self.cpu_cores = max_workers or cpu_count() // 2 # 预留一半资源
  11. self.gpu_pool = gpu_list or []
  12. self.lock = Manager().Lock()
  13. print("可用cpu核数有:{}核".format(self.cpu_cores))
  14. def get_gpu(self):
  15. """动态分配GPU资源"""
  16. with self.lock:
  17. if self.gpu_pool:
  18. return self.gpu_pool.pop()
  19. return None
  20. def release_gpu(self, gpu_id):
  21. """释放GPU资源"""
  22. if gpu_id is not None:
  23. with self.lock:
  24. self.gpu_pool.append(gpu_id)