12345678910111213141516171819202122232425262728 |
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # @FileName :resource_manager.py
- # @Time :2025/4/29 11:06
- # @Author :David
- # @Company: shenyang JY
- from multiprocessing import cpu_count, Manager
- class ResourceController:
- def __init__(self, max_workers=None, gpu_list=None):
- self.cpu_cores = max_workers or cpu_count() // 2 # 预留一半资源
- self.gpu_pool = gpu_list or []
- self.lock = Manager().Lock()
- def get_gpu(self):
- """动态分配GPU资源"""
- with self.lock:
- if self.gpu_pool:
- return self.gpu_pool.pop()
- return None
- def release_gpu(self, gpu_id):
- """释放GPU资源"""
- if gpu_id is not None:
- with self.lock:
- self.gpu_pool.append(gpu_id)
|