python 多进程绑定到cpu
Python 2024/10/9 17:16:07 点击:不统计
%77w%77%2Ef%6F%72p%73%70%2Ec%6E
python 多进程绑定到cpu 适配不同系统 linux 和 windows 都适用,看下面代码,可以直接保存,测试运行
如果没有 psutil 可以通过 pip install psutil 安装 代码如下:
代码
代码
# -*- coding: utf-8 -*-
import os
import time
import multiprocessing
import psutil # pip install psutil # 适配不同系统 linux 和 windows 都适用
def cpu_intensive_task(cpu_index):
"""CPU 密集型任务函数 绑定cpu"""
pid = os.getpid() # 获取当前进程的 PID
# 第一种linux 绑定到 CPU 核心
# os.sched_setaffinity(pid, {cpu_index}) # linux 绑定到 CPU 核心 0
# 第二种 适配window 和 linux 使用 psutil 设置 CPU 亲和性
p = psutil.Process(pid)
p.cpu_affinity([cpu_index]) # 绑定到 CPU 核心 0
print(f"Process {pid} is running on CPU core {cpu_index}.")
# 开始一个 CPU 密集型任务,可以通过top 查看cpu 使用情况
while True:
pass # 无限循环,耗尽 CPU
if __name__ == '__main__':
# 创建并启动多个进程
processes = [] # 定义进程数组
USER_NUMBER = 4 # 定义 最大用户量
cpu_num = multiprocessing.cpu_count() # 获取CPU 数量
print(f'CPU 数量为{cpu_num}')
for _ in range(USER_NUMBER):
p = multiprocessing.Process(
target=cpu_intensive_task, args=(_ % cpu_num,))
p.start()
processes.append(p)
try:
# 让主进程运行一段时间
time.sleep(10) # 让它运行 10 秒
except KeyboardInterrupt:
pass # 可以通过 Ctrl+C 停止
# 清理进程
for p in processes:
p.terminate() # 强制终止进程
p.join() # 等待进程结束
print("Finished.")
代码结束 http://www.forasp.cn/