首页 > 系统相关 >python进程绑定CPU的一些Demo

python进程绑定CPU的一些Demo

时间:2023-01-30 11:31:07浏览次数:34  
标签:avia python Demo 绑定 func 进程 os CPU

从​​中知道如何对python进程设置CPU绑定,本文对此进行一些延伸,给出一些例子:

代码1:

import os
from multiprocessing import Process
import time


cpu_avia = os.sched_getaffinity(os.getpid())

os.sched_setaffinity(os.getpid(), list(cpu_avia)[:2]) # 绑定两个核心

def func():
while True:
pass


process = [Process(target=func) for i in range(2)]
for proc in process:
proc.start()

time.sleep(600)

python进程绑定CPU的一些Demo_父进程

可以看到在父进程中设置绑定两个CPU,那么另个子进程每个的单CPU利用率均可以达到100% 。

 

现在的疑问是这个绑定2个CPU后子进程和父进程是不是一同绑在了这2个CPU上,如果父进程也进行死循环运行那么每个进程的利益率会是多少,因此给出第二个代码:

代码2:

import os
from multiprocessing import Process


cpu_avia = os.sched_getaffinity(os.getpid())
print(cpu_avia)

os.sched_setaffinity(os.getpid(), list(cpu_avia)[:2]) # 绑定两个核心


def func():
while True:
pass

process = [Process(target=func) for i in range(2)]
for proc in process:
proc.start()


func()

python进程绑定CPU的一些Demo_Python_02

可以看到父进程和两个子进程的利用率总和约为200%,也就是说父进程和两个子进程被绑定到这两个CPU上,因此三个进程的CPU利用率总和为200%。

 

 

通过上面的两个例子我们知道在父进程中绑定多个CPU其实还不能很好的对子进程的CPU绑定起到细粒度的控制,为此我们给出更细粒度的绑定的例子:

代码3:

import os
from multiprocessing import Process


cpu_avia = os.sched_getaffinity(os.getpid())
print(cpu_avia)

os.sched_setaffinity(os.getpid(), list(cpu_avia)[:2]) # 绑定两个核心


def func(id):
os.sched_setaffinity(os.getpid(), list(cpu_avia)[id:id+1]) # 绑定两个核心
while True:
pass

process = [Process(target=func, args=(i+1, )) for i in range(2)]
for proc in process:
proc.start()


func(0)

python进程绑定CPU的一些Demo_Python_03

 

 

 

===================================

 

标签:avia,python,Demo,绑定,func,进程,os,CPU
From: https://blog.51cto.com/u_15642578/6026173

相关文章

  • python文字转语音
    依赖pyttsx3库pipinstallpyttsx3 yuyin_test1.pyimportpyttsx3engine=pyttsx3.init()engine.say("Fourthlettersoftransitinthespringbreezeasyo......
  • 使用prometheus来避免Kubernetes CPU Limits造成的事故
    使用prometheus来避免KubernetesCPULimits造成的事故译自:UsingPrometheustoAvoidDisasterswithKubernetesCPULimits本文将介绍Kubernetes的resourcelimits是......
  • python3-pip
    一、pip介绍Python官网中的安装包中已经自带了pip,在安装时默认选择安装。安装完python后需要手动配置pip的环境变量,cmd命令可以查看pip是否可用:pip或者pip-h二、命令......
  • Python Numpy 中的打印设置函数set_printoptions
    一概述np.set_printoptions()用于控制Python中小数的显示精度。二解析np.set_printoptions(precision=None,threshold=None,linewidth=None,suppress=None,......
  • python2--安装es报错:error in elastic-transport setup command: 'install_requires'
    今天使用python2安装es模块时报错:  原因是pip(模块管理工具)版本过低,需先升级pip,再进行安装先替换pip的镜像,默认镜像拉取慢,还可能会失败cd~;mkdir.pip;touch.p......
  • python爬虫(二)- HTML解析之XPath
    HTML解析通过urllib、requests,都可以拿到HTML内容。HTML的内容返回给浏览器,浏览器就会解析它,并对它渲染。HTML超文本表示语言,设计的初衷就是为了超越普通文本,让文本表......
  • CPU/GPU/FPGA芯片分析
    CPU/GPU/FPGA芯片分析CPU由于并行性的限制和操作系统的调度,做通信效率不高,延迟也不稳定。 此外,通信就必然涉及到调度和仲裁,CPU由于单核性能的局限和核间通信的低效,......
  • Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
    全文链接:http://tecdat.cn/?p=27078最近我们被客户要求撰写关于KShape的研究报告,包括一些图形和统计输出。时序数据的聚类方法,该算法按照以下流程执行。使用基于互相关......
  • curl_cffi: 支持原生模拟浏览器 TLS/JA3 指纹的 Python 库
    原文首发于我的博客:https://yifei.me/note/2719越来越多的网站开始使用TLS指纹反爬虫,而Python中竟然没有任何方法解决这个问题。前一阵看到由国外大神写了一个curl-......
  • Python 基础语法介绍(一)
    目录一、概述二、变量1)变量定义2)定义变量的规则3)变量命名规范4)变量类型转换三、注释1)单行注释2)多行注释1、单引号(''')注释2、双引号(""")注释四、运算符1)算术运算符2)关系运算......