import multiprocessing
import math

def stress_cpu():
    # 一个简单的CPU密集型任务
    while True:
        math.factorial(100)

if __name__ == "__main__":
    # 获取CPU核心数量
    num_cores = multiprocessing.cpu_count()
    
    # 计算一半的核心数量
    half_cores = num_cores // 4
    
    print(f"CPU核心总数: {num_cores}")
    print(f"压测核心数量: {half_cores}")
    
    # 创建进程列表
    processes = []
    
    # 启动一半核心数量的进程
    for _ in range(half_cores):
        p = multiprocessing.Process(target=stress_cpu)
        p.start()
        processes.append(p)
    
    # 等待所有进程完成（实际上这些进程不会结束，除非手动终止）
    try:
        for p in processes:
            p.join()
    except KeyboardInterrupt:
        print("检测到中断信号，停止压测...")
        for p in processes:
            p.terminate()
        for p in processes:
            p.join()
        print("所有压测进程已终止。")