Python中如何控制某个软件的CPU或GPU使用率

小弟不才,不知道哪个库有 使用 python 控制某个软件的 cpu 或者 gpu 使用率?
请指教
Python中如何控制某个软件的CPU或GPU使用率

9 回复

可以监控使用率,控制这种,还是请高人 来做吧


这个需求通常需要操作系统级别的权限,而且直接控制其他进程的资源使用率比较复杂。不过,我们可以通过几种不同的思路来实现类似的效果。

1. 使用系统工具(最简单) 在Linux上,你可以用cpulimit工具来限制某个进程的CPU使用率:

cpulimit -p <pid> -l 50  # 限制PID为<pid>的进程CPU使用率不超过50%

2. Python实现CPU限制(模拟) 如果你想让自己的Python程序限制CPU使用率,可以通过控制工作/休眠的时间比例来实现:

import time

def limited_cpu_task(target_percent=50, duration=10):
    """模拟限制CPU使用率的工作循环"""
    interval = 0.1  # 100ms周期
    work_time = interval * target_percent / 100
    sleep_time = interval - work_time
    
    start = time.time()
    while time.time() - start < duration:
        # 工作阶段
        work_end = time.time() + work_time
        while time.time() < work_end:
            # 这里执行一些计算任务
            _ = sum(range(10000))
        
        # 休眠阶段
        if sleep_time > 0:
            time.sleep(sleep_time)

# 使用50%的CPU运行10秒
limited_cpu_task(target_percent=50, duration=10)

3. 使用第三方库 对于更精确的控制,可以考虑:

  • psutil:监控和控制系统资源
  • resource(Unix):设置进程资源限制
  • GPUtil:监控GPU使用情况

4. 对于GPU的限制 如果是TensorFlow/PyTorch等深度学习框架,通常有内置的方法:

# TensorFlow示例
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
    # 限制第一个GPU的内存使用率
    tf.config.experimental.set_virtual_device_configuration(
        gpus[0],
        [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024)]  # 限制1GB
    )

总结: 具体方法取决于你要控制的是自己的程序还是其他软件。

有这么个模块 psutil

用 cgroup 搞一搞应该可以

你需要的事 cgroups

cpu 分配是内核负责的,通常编程都是在用户态。
看起来用户态没有机会影响 cpu 使用率,不过如果你把 python 程序每一句全用协程实现,自己写控制器负责运行协程,然后在用户态监视控制器进程 cpu 占用率,超过监控值就暂停执行协程。就能达到同样的效果。这种技术叫做 pwm

我倒想知道如何让某个程序运行的很慢很慢

os.system("nice " + program)

这个跟系统有关系,看看系统 API

回到顶部