基于python实现并编译提升cpu与内存使用率的脚本

在服务器运维过程中,有很多公司会对服务器的资源使用率进行监测,发现使用率不高了,会对服务器降配。如果你是乙方,你可以尝试一下这种方法,脚本提升cpu与内存的使用率。如果你需要对服务器性能或者服务稳定性进行测试,也可以使用这种方法。

CPU使用率提升

现在的cpu性能都很高,普通的正弦余弦函数,没有作用。最好使用斐波那契数列,同时充分提供多核进行计算。

import multiprocessing
def fibonacci(n):
    """
    计算第n个斐波那契数列
    """
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]
    else:
        fib_list = [0, 1]
        while len(fib_list) < n:
            new_num = fib_list[-1] + fib_list[-2]
            fib_list.append(new_num)
        return fib_list

def worker(num):
    """
    一个简单的工作函数,这里可以替换为你的计算密集型任务
    """
    print(f"Worker {num} is running")
    # 模拟工作
    for i in range(20000):
        array=fibonacci(8000)
        array2=fibonacci(4000)
        print(len(array), end="")
        print(len(array2))


def improve_cpu():
    # 获取CPU核心数
    num_cpus = multiprocessing.cpu_count()
    print(f"Using {num_cpus} CPUs")

    # 创建进程池
    pool = multiprocessing.Pool(processes=num_cpus)

    # 向进程池提交任务
    for i in range(num_cpus):
        pool.apply_async(worker, args=(i,))

    # 关闭进程池并等待所有任务完成
    pool.close()
    pool.join()
    print("CPU测试完成")

if __name__ == "__main__":
    improve_cpu()

内存使用率提升

内存使用率提升,可以通过构建大的bytearray来实现。
注意,

  1. 防止变量被回收
  2. 不要使用time.sleep来持续时间,占用内存会不生效
  3. 尽量不要百分百占用,会影响系统的其他业务
import psutil
import asyncio

async def wait_for_a_minute():
    print("开始等待2分钟....")
    await asyncio.sleep(120)
    print("已经等待了2分钟。")
    return "Done"

def improve_memory():
    total_memory = psutil.virtual_memory().total / 1024 ** 3
    print("总内存" + str(total_memory) + "GB")
    free_memory = psutil.virtual_memory().free / 1024 ** 3
    print("可用内存" + str(free_memory) + "GB")
    # 使用剩余内存60%
    use_size = int(psutil.virtual_memory().free * 6 / 10)
    print("预计使用" + str(use_size / 1024 ** 3) + "GB")
    print("开始内存测试")
    memory = bytearray(use_size)
    asyncio.run(wait_for_a_minute())
    print(len(memory))
    print("内存测试完成")
    
if __name__ == "__main__":
    improve_memory()

编译部署

  1. 开发的脚本,可以通过pyinstaller编译为可执行文件。
 pyinstaller --onefile main.py

注意,在windows上会被编译会exe,在centos会直接编译为可以执行文件。

  1. 在centos上执行的话,需要使用下面命令,对文件进行授权。
 chmod 777 main
  1. 可以与定时任务结合,定时提升服务器的使用率。

编译结果与源码下载地址https://download.csdn.net/download/GISuuser/89533686

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值