https://www.cnblogs.com/devilmaycry812839668/p/17066212.html中知道如何对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)

可以看到在父进程中设置绑定两个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()

可以看到父进程和两个子进程的利用率总和约为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)

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

参考:

https://www.cnblogs.com/devilmaycry812839668/p/17066212.html

https://blog.csdn.net/weixin_39755712/article/details/111434443

python进程绑定CPU的一些Demo的更多相关文章

  1. linux下进程绑定cpu情况查看的几种方法

    1.pidstat命令 查看进程使用cpu情况,如果绑定了多个cpu会都显示出来 pidstat -p `pidof 进程名` -t 1 2.top命令 (1)top (2)按f键可以选择下面配置选项 ...

  2. NGINX源代码剖析 之 CPU绑定(CPU亲和性)

    作者:邹祁峰 邮箱:Qifeng.zou.job@gmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.06.12 18:44 转载请注明来自&quo ...

  3. Ubuntu系统进程绑定CPU核

    Ubuntu系统进程绑定CPU核 作者:chszs.版权全部,未经允许,不得转载. 博主主页:http://blog.csdn.net/chszs 本文讲述如何在Ubuntu系统中,把指定的进程绑定到 ...

  4. Linux编程之《进程/线程绑定CPU》

    Intro----- 通常我们在编写服务器代码时,可以通过将当前进程绑定到固定的CPU核心或者线程绑定到固定的CPU核心来提高系统调度程序的效率来提高程序执行的效率,下面将完整代码贴上. /***** ...

  5. Nginx 关于进程数 与CPU核心数相等时,进程间切换的代价是最小的-- 绑定CPU核心

    在阅读Nginx模块开发与架构模式一书时: "Nginx  上的进程数 与CPU核心数相等时(最好每个worker进程都绑定特定的CPU核心),进程间切换的代价是最小的;" &am ...

  6. Linux 和 Windows 查看当前运行的 python 进程及 GPU、CPU、磁盘利用率

    目录 查看当前 python 进程 Linux Windows 查看 GPU 利用率 Linux Windows Linux CPU 利用率 Linux 磁盘利用率 查看当前 python 进程 Li ...

  7. 线程或进程绑定到特定的cpu

    常用的宏定义有: 1) 对cpu集进行初始化, 将其设置为空集 void CPU_ZERO(cpu_set_t *set); 2) 将指定的cpu加入到cpu集中 void CPU_SET(int c ...

  8. 【笔记】Linux进程间同步和进程绑定至特定cpu

    #define _GNU_SOURCE #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> ...

  9. Python测试进阶——(5)Python程序监控指定进程的CPU和内存利用率

    用Python写了个简单的监控进程的脚本monitor190620.py,记录进程的CPU利用率和内存利用率到文件pid.csv中,分析进程运行数据用图表展示. 脚本的工作原理是这样的:脚本读取配置文 ...

  10. Python 进程线程协程 GIL 闭包 与高阶函数(五)

    Python 进程线程协程 GIL 闭包 与高阶函数(五) 1 GIL线程全局锁 ​ 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的 ...

随机推荐

  1. HTTP报文结构详解

    HTTP/HTTPS简介HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网( WWW:World Wide Web )服务器传输超文本到 ...

  2. Externalizable接口实现序列化与反序列化

    Externalizable接口实现序列化与反序列化 package com.example.core.mydemo.java; import com.example.core.mydemo.json ...

  3. logback日志格式模板,基于TraceId搜索完整的请求链路日志

    logback日志格式模板,基于TraceId搜索完整的请求链路日志 日志打印格式:(可以基于TraceId:4d484c2a110eae9d来搜索完整的请求链路日志2023-08-28 15:06: ...

  4. 关于error: failed to push some refs to如何解决

    Smiling & Weeping ---- 在你的门前,我堆起一个雪人,代表笨拙的我,把你久等 常见的错误报错内容基本都是error: failed to push some refsto' ...

  5. python重拾第十三天-那就做个堡垒机吧

    本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功 ...

  6. ClickHouse介绍(四)ClickHouse使用操作

    ClickHouse使用操作 这章主要介绍在ClickHouse使用的各个操作的注意点.常规的统一语法不做详细介绍. 1. Join操作 在ClickHouse中,对连接操作定义了不同的精度,包含AL ...

  7. STM32 CubeMX 学习:06-配置DMA

    --- title: mcu-stm32-cube-06-配置DMA date: 2020-05-31 16:39:05 categories: tags: - stm32 - cubeMx - dm ...

  8. 背包dp——01背包

    01背包是背包dp的基础的重点,重点的基础!!! 题意概要:有 n 个物品和一个容量为 W 的背包,每个物品有重量 w_{i} 和价值 v_{i} 两种属性,要求选若干物品放入背包使背包中物品的总价值 ...

  9. Nuxt3 的生命周期和钩子函数(十)

    title: Nuxt3 的生命周期和钩子函数(十) date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要:本文详细介绍了Nu ...

  10. Spring注解之依赖注入@Autowired和@Resource

    Spring常见的DI方式 字段注入(Field Injection) 在字段上使用@Autowired/Resource注解 字段注入是日常开发中使用最多的一种注入方式,它的实现代码如下: @Aut ...