resource_manager.py 788 B

12345678910111213141516171819202122232425262728
  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. def get_gpu(self):
  14. """动态分配GPU资源"""
  15. with self.lock:
  16. if self.gpu_pool:
  17. return self.gpu_pool.pop()
  18. return None
  19. def release_gpu(self, gpu_id):
  20. """释放GPU资源"""
  21. if gpu_id is not None:
  22. with self.lock:
  23. self.gpu_pool.append(gpu_id)