【Linux】进程优先级、进程切换、进程调度
Linux
- 1.进程优先级
- 1.基本概念
- 2.查看进程
- 1.UID
- 2.PRI、NI
- 3.修改优先级(PRI)
- 3.竞争、独立、并行、并发
- 2.进程切换
- 3.进程调度
- 1.活动队列
- 2.过期队列
- 3.active、expired指针
1.进程优先级
1.基本概念
- 优先级:进程得到 CPU 资源分配的先后顺序。
- 优先级高的进程有优先执行的权利。配置进程优先级对多任务环境的 Linux 很有用,可以改善系统性能。
- 还可以把进程运行到指定的 CPU 上。这样一来,把不重要的进程安排到某个 CPU,可以大大改善系统整体性能。
- 为什么要有优先级?由于 CPU 资源稀缺,导致需要通过优先级确认进程的先后顺序。
- 优先级 VS 权限。优先级:能得到某种资源,只不过存在先后问题。权限:能否得到某种资源。
- 优先级是进程中 PCB(task_struct)中的一个整形数字。数字值越小,优先级越高;数字值越大,优先级越低。
- Linux 操作系统叫做基于时间片的分时操作系统。
2.查看进程
通过 ps -al 查看系统中的所有进程的详细信息:
- PID:该进程的代号。
- PPID:该进程的父进程代号。
1.UID
UID:执行者的身份。
- 在 Linux 中并不是通过用户名来识别身份的,每一个用户名都对应一个 UID,通过 UID 来识别用户身份。用户名是给用户看的,而 UID 是给 Linux 系统看的。
- 在创建文件的时候,就往文件属性中写入了 UID,表明文件的创建者。进程执行的时候,进程也会将 UID 保存起来,表明进程的执行者。
- 访问文件的本质:进程访问文件(cat等指令,都是一个个进程)
- 进程访问文件时,怎么知道当前用户是该文件的拥有者/所属组/other?是通过进程的 UID,匹配文件拥有者/所属组/other的 UID。
- Linux 系统中,访问任何资源,都是以进程的方式访问,进程就代表用户的身份。运行的每一条指令/程序,用过的每一个工具都是进程。用户通过进程和操作系统交互,所有的请求和任务都是进程,通过进程让操作系统调度、执行。识别权限:不是识别用户,而是通过 UID 来识别进程和文件之间的权限。
2.PRI、NI
- PRI:进程的优先级。默认:80
- NI:进程优先级的修正数据,nice值。默认:0。
PRI(进程优先级)= 80 + NI
需要强调一点的是,进程的nice值不是进程的优先级,他们不是⼀个概念,但是进程nice值会影响到进程的优先级变化。可以理解nice值是进程优先级的修正修正数据。
3.修改优先级(PRI)
修改优先级(PRI),本质是修改 NI 值。使用 top 命令更改已存在进程的nice值。
- 输入:top
- 输入:r
- 输入:进程PID
- 输入:nice值
注意:进程的优先级不允许由普通用户多次修改,即便是该进程的执行者。可以使用 root 用户多次修改优先级。
- 其他调整优先级的命令:nice,renice。
- 系统调用:getpriority、setpriority。
PRI、NI的取值范围:
- PRI:[60, 99]
- NI:[-20, 19]
优先级设立不合理,会导致优先级低的进程,长时间得不到 CPU 资源,进而导致:“进程饥饿”。
3.竞争、独立、并行、并发
- 竞争:系统进程数目众多,而 CPU 资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
- 独立:多进程运行,需要独享各种资源,多进程运行期间互不干扰。
- 并行:多个进程在多个 CPU 下同时运行,这称之为并行。
- 并发:多个进程在一个 CPU 下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
2.进程切换
死循环进程如何运行?
- 一但一个死循环进程占用 CPU,不会将自己的代码跑完。存在时间片(一个非常短的时间)的概念,在该时间片内跑死循环进程,时间到了就会将该进程从运行队列中剥离下来,放到运行队列的最后面,让下一个进程运行。这也就是并发。
- 死循环进程不会一直占用 CPU 资源。
进程如何切换?
- 当进程 A 占用 CPU 资源时:在时间片内 CPU 运行该进程,CPU 内的寄存器会不断地保存、更新,执行代码过程中的临时数据。当执行完一个时间片时:进程 A 就会带走并保存寄存器中进程的上下文数据(拷贝过程),寄存器中的数据依旧是当时的数据,没有意义。再将进程 A 重新丢进调度队列的结尾,执行下一个进程 B。
- 当执行进程 B 时:将进程 B 的上下文数据覆盖寄存器中的数据(例如:将 main 函数的地址丢进 PC 寄存器中,通过地址找到要执行的代码)。同理当执行完一个时间片时:进程 B 也要带走并保存下文数据,为了下一次执行进程 B,能找到上一次的运行位置。
进程切换的本质:保存和恢复当前进程的硬件上下文数据(CPU内寄存器的内容)
- 进程将自己的上下文数据保存到进程的 task_struct 中的 任务状态段(TSS 结构体)中。
- 全新的进程和已经调度过的进程通过标记位做区分。
时间片:当代计算机都是分时操作系统,没有进程都有它合适的时间片(其实就是一个计数器),时间片到达,进程就被操作系统从CPU中剥离下来。
3.进程调度
- 进程切换:保存当前进程的上下文和恢复下一个进程的上下文。
- 进程调度:操作系统根据调度算法,从调度队列中选择一个进程,将其分配到CPU上执行的过程。
- 分时操作系统:基于时间片轮转,系统将 CPU 时间划分为多个时间片,每个时间片分配给一个任务。当时间片用完时,系统会挂起当前任务,并将 CPU 分配给下一个任务。应用领域:互联网。
- 实时操作系统:遇到高优先级的进程,立即中断当前 CPU 执行的进程,该优先级高的进程立即执行,必须将该进程运行完,才能运行下一个进程。应用领域:工业、制造业。
- 实时优先级是为了实时操作系统所设置的,但在互联网领域我们可以无需关心实时优先级,只需考虑分时优先级。
- 之所以设置实时优先级的原因:为了让Linux操作系统能被更广泛的使用。
下面讲解 Linux 中的调度算法
- 优先级范围:[60, 99] 就是映射 [100, 139] 位置
- 宏观上:遍历 [100, 139] 位置的进程队列,可以按照优先级顺序进行进程调度。局部上:在同一个进程队列中的进程优先级都相同,此时取该进程队列中的第一个进程,进行进程调度,满足队列的 “先进先出” 特性。
1.活动队列
- 时间片还没有结束的所有进程,都按照优先级放在该队列。
- nr_active:总共有多少个运行状态的进程。
- queue[140]:一个元素就是一个进程队列,相同优先级的进程按照FIFO规则进行排队调度,所以数组下标就是优先级!
- 从该结构中,选择一个最合适的进程,过程是怎么的呢?
- 从0下标开始遍历queue[140]。
- 找到第一个非空队列,该队列必定为优先级最高的队列。
- 拿到选中队列的第一个进程,开始运行,调度完成!
- 遍历queue[140]时间复杂度是常数!但还是太低效了!
- bitmap[5]:共140个优先级,一共140个进程队列,为了提高查找非空队列的效率,就可以用5*32个比特位表示队列是否为空,这样便可以大堆提高查找效率!
2.过期队列
如果 CPU 调度优先级为 x 的进程,当执行完一个时间片时,会将该进程丢进同等优先级 x 的进程队列的末尾处,此时若存在死循环进程,那么优先级低的进程将永远不会被进行。造成 “进程饥饿” 问题!为了解决该问题,运行队列(runqueue)中存在于活动队列结构一模一样的 “过期队列”。
注意:当创建了一个新进程,该进程将会被丢进活动队列中。
3.active、expired指针
- active 指针永远指向活动队列。
- expired 指针永远指向过期队列。
- 在 CPU 不断调度进程时,活动队列中的进程会越来越少,而过期队列上的进程会越来越多。
- 当活动队列中没有进程时(nr_active == 0),只需交换 active 指针和 expired 指针的内容,就相当于有具有了一批新的活动进程!CPU 继续执行调度进程工作。
总结:在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增加,我们称之为进程调度O(1)算法。
相关文章:
【Linux】进程优先级、进程切换、进程调度
Linux 1.进程优先级1.基本概念2.查看进程1.UID2.PRI、NI3.修改优先级(PRI) 3.竞争、独立、并行、并发 2.进程切换3.进程调度1.活动队列2.过期队列3.active、expired指针 1.进程优先级 1.基本概念 优先级:进程得到 CPU 资源分配的先后顺序。优…...
HCIP第十二天
LSA --- 链路状态通告 链路状态类型,链路状态ID,通告路由器 --- LSA的三元组 --- 可以唯一的标识出一条LSA Type --- OSPFv2中,常见的需要掌握LSA有6种 LS ID --- LSA的名字 --- 因为每一种LSA LS ID的生成方式都不相同,所以&am…...
Magnet Pro Macbook窗口分屏管理软件【提高效率工具】
Magnet Pro Macbook窗口分屏管理软件【提高效率工具】 一、介绍 Magnet Pro for Mac,是一款功能强大的窗口分屏管理软件,具有多种布局模式、窗口布局功能和其他工具,可以帮助您高效地进行多任务处理和管理工作。 拖动窗口到边缘,…...
控制单元(Control Unit, CU)
一、控制单元的定义与核心作用 控制单元 是 CPU 的核心部件之一,负责 解析指令、生成控制信号 并 协调各硬件部件 的工作时序,确保指令按预定流程正确执行。 核心定位:计算机系统的“指挥中心”,通过控制总线与运算器、存储器、…...
JavaWeb 课堂笔记 —— 10 MySQL DML + DQL
本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…...
基于 LSTM 的多特征序列预测-SHAP可视化!
往期精彩内容: 单步预测-风速预测模型代码全家桶-CSDN博客 半天入门!锂电池剩余寿命预测(Python)-CSDN博客 超强预测模型:二次分解-组合预测-CSDN博客 VMD CEEMDAN 二次分解,BiLSTM-Attention预测模型…...
【C++】哈希扩展海量数据处理
目录 位图 位图面试题 C库中的位图bitset 位图优缺点 位图相关题目 布隆过滤器 布隆过滤器的介绍 布隆过滤器的应用 海量数据处理 位图 位图面试题 1.给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个整数是否在这40亿…...
考研数据结构精讲:数组与特殊矩阵的压缩存储技巧(包含真题及解析)
考研数据结构精讲:数组与特殊矩阵的压缩存储技巧 一、数组基础概念 1.1 数组的定义 数组是由相同数据类型的元素构成的有限序列,具有以下核心特性: 维度特性:支持一维到多维结构(常见二维数组)随机访问…...
【Android】ContentResolver的使用
在 Android 中,ContentResolver 是一个非常重要的类,它提供了与 ContentProvider 进行交互的方法。ContentProvider 是用于在不同应用程序之间共享数据的标准接口,而 ContentResolver 则是从客户端(如 Activity 或 Service&#x…...
Python 的 collections 模块
1. deque (双端队列) 定义 deque(读作 “deck”,即双端队列)是一个支持从两端高效添加和删除元素的数据结构。相比列表(list)在头部操作的 O(n) 时间复杂度,deque 的两端操作都是 O(1)。 用途 队列和栈…...
浏览器发起调用到服务器的全过程解析
在 Web 应用的交互过程中,从用户在浏览器输入 URL 发起请求,到最终获取服务器返回的内容,背后涉及多个复杂而有序的步骤。理解这一过程,对于深入掌握 Web 开发、优化应用性能以及排查网络问题都具有重要意义。下面将详细阐述浏览器…...
塑料瓶识别分割数据集labelme格式976张1类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):976 标注数量(json文件个数):976 标注类别数:1 标注类别名称:["Trash plastic"] 每个类别标注的框数…...
RuoYi-Vue升级为https访问-后端安装SSL证书(单台Linux服务器部署)
一、前言 当Nginx已经作为反向代理并成功配置了SSL证书时,前端客户端与Nginx的通信已经是加密的。但Nginx和后端服务之间的连接可能仍然存在明文传输的风险。 如果Nginx和后端服务位于同一台物理机器或者通过安全的内部网络(如私有VLAN或防火墙保护的内网)进行通信,则可以…...
【学习笔记】文件上传漏洞--中间件解析漏洞、编辑器安全
目录 一、IIS 二、Apache HTTP Server 三、Apache HTTPD 未知后缀解析漏洞 四、Apache HTTPD 换行解析漏洞 五、黑、白名单 六、nginx解析漏洞 七、编辑器漏洞 一、IIS 文件夹 正常:image/qq.jpg 执行:image.asp/qq.jpg qq.jpg就会被当做asp解…...
【论文阅读】UniAD: Planning-oriented Autonomous Driving
一、Introduction 传统的无人驾驶采用了区分子模块的设计,即将无人驾驶拆分为感知规划控制三个模块,这虽然能够让无人驾驶以一个很清晰的结构实现,但是感知的结果在传达到规划部分的时候,会导致部分信息丢失,这势必会…...
【第16届蓝桥杯C++C组】--- 数位倍数
Hello呀,小伙伴们,第16届蓝桥杯也完美结束了,无论大家考的如何,都要放平心态,今年我刚上大一,也第一次参加蓝桥杯,刷的算法题也只有200来道,但是还是考的不咋滴,但是拿不…...
【腾讯云智】20250329笔试算法题
文章目录 第一题1. 题目描述2. 思路解析3. AC代码 第二题1. 题目描述2. 思路解析3. AC代码 第三题1. 题目描述2. 思路解析3. AC代码 第一题 1. 题目描述 题目链接:牛牛的水果店 2. 思路解析 这题比较简单,按数学思维把题目的意思翻译过来就是给你一…...
【2025最新】windows本地部署LightRAG,完成neo4j知识图谱保存
之前在服务器部署neo4j失败,无奈只能在本地部署,导致后期所有使用的知识图谱数据都存在本地,这里为了节省时间,先在本地安装LigthRAG完成整个实验流程,后续在学习各种服务器部署和端口调用。从基础和简单的部分先做起来…...
思考力提升的黄金标准:广度、深度与速度的深度剖析
文章目录 引言一、广度的拓展:构建多元知识网络1.1 定义与重要性1.2 IT技术实例与提升策略小结:构建多元知识网络,提升IT领域思考力广度 二、深度的挖掘:追求知识的精髓2.1 定义与重要性2.2 IT技术实例与提升策略小结:…...
7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant
7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant 本文简要总结了当今市场上正在积极开发的7个向量数据库,Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant 的详细比较。 我们已经接近在搜索引擎体验的基础层面上涉…...
计算机组成原理笔记(十五)——3.5指令系统的发展
不同类型的计算机有各具特色的指令系统,由于计算机的性能、机器结构和使用环境不同,指令系统的差异也是很大的。 3.5.1 x86架构的扩展指令集 x86架构的扩展指令集是为了增强处理器在多媒体、三维图形、并行计算等领域的性能而设计的。这些扩展指令集通…...
Rust 中的Relaxed 内存指令重排演示:X=0 Y=0 是怎么出现的?
🔥 Rust 中的内存重排演示:X0 && Y0 是怎么出现的? 在并发编程中,我们经常会听说“内存重排(Memory Reordering)”这个术语,但它似乎总是只出现在理论或者别人口中的幻觉里。本文将通过…...
vp 2023 icpc 合肥 解题补题记录 [F E J G]
gym 链接: https://codeforces.com/gym/104857 F. Colorful Balloons 血签, 用 map 存一下每个颜色气球出现的次数, 找出出现次数大于一半的颜色. #include<bits/stdc.h> using namespace std;#define int long long #define endl \nsigned main() {int n;cin >> …...
学习SqlSugar的跨库查询基本用法
使用SqlSugar操作数据库通常都是单库操作,跨库查询的情况要么是单个系统数据不完整,需要其它系统的关联业务数据支撑,要么就是需要整合汇总多个系统的数据进行数据数据分析、处理、展示。遇到上述情况,可以要求另外的系统提供查询…...
智慧工厂可视化系统,赋能工业生产智能化升级
借助图扑软件 HT 搭建智慧工厂可视化系统。利用先进 3D 建模,对工厂布局、设备运行、生产流程进行逼真复刻。实时展示设备状态、生产进度、质量检测数据等,助力管理者精准洞察生产,高效决策,推动工厂智能化转型。...
案例驱动的 IT 团队管理:创新与突破之路: 第四章 危机应对:从风险预见到创新破局-4.1.2债务评估模型与优先级排序
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 4.1.2 技术债务评估模型与优先级排序:构建智能决策体系一、技术债务的"冰山效应"与量化困境二、三维评估模型:穿透债务迷雾的探照灯2.1 评…...
nfs共享目录主配置文件权限参数
/etc/exports 文件默认为空文件,需要输入nfs共享命令 格式:共享目录的路径 允许访问的NFS客户端(共享权限参数) #编辑共享目录配置文件(即/etc/exports) [rootserver ~]# mkdir /nfs_share (创建共享的目录…...
C++ 编程指南35 - 为保持ABI稳定,应避免模板接口
一:概述 模板在 C 中是编译期展开的,不同模板参数会生成不同的代码,这使得模板类/函数天然不具备 ABI 稳定性。为了保持ABI稳定,接口不要直接用模板,先用普通类打个底,模板只是“外壳”,这样 AB…...
探索 MCP 和 A2A 协议: 本质上新协议都基于 HTTP的
以下是以 CSDN 博客的形式记录你对 MCP 协议和 A2A 协议数据传递的理解,重点探讨了它们为何基于 HTTP 协议、HTTP 的优势,以及数据传输的本质。文章面向技术社区,结构清晰,适合分享。 探索 MCP 和 A2A 协议:为何新协议…...
Linux网络http与https
应用层协议HTTP 提示 因为现在大多数都是https,所以就用https来介绍http,https比http多了一个加密功能,不影响介绍http。 什么是http 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的…...
C++ 算法(2):STL list 完全解析,从入门到高效使用
1. list概述 std::list是C标准模板库(STL)中的一个双向链表容器。与vector和deque不同,list不支持随机访问,但它在任何位置插入和删除元素都非常高效,时间复杂度为O(1)。 2. list的基本特性 双向链表结构:每个元素都包含指向前驱…...
【Linux实践系列】:匿名管道收尾+完善shell外壳程序
🔥 本文专栏:Linux Linux实践项目 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 人生总会有自己能力所不及的范围,但是如果你在你能力所及的范围尽了全部的努力,那你还有什么遗…...
Linux基本指令2
1.head 查看文件的前面内容 head 路径 :查看路径开头部分内容,如下图:head /var/log/messages查看/var/log/messages这个日志中前面内容 head -数字 路径 :查看路径开头指定数字行部分内容,如下图:he…...
Tkinter使用Canvas绘制图形
在Tkinter中,Canvas是一个非常强大的控件,用于绘制图形、显示图片和实现自定义图形界面。通过Canvas,您可以绘制各种形状、线条、文本等,并且能够进行灵活的动画和交互。掌握Canvas的使用将使您能够创建丰富的图形界面。 8.1 创建Canvas控件 Canvas控件是一个区域,用于绘…...
CF985G Team Players
我敢赌,就算你知道怎么做,也必然得调试半天才能 AC。 [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 图片来自洛谷。 [Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis] 显然不可能正面计算。所以…...
ngx_conf_read_token - events
file_size ngx_file_size(&cf->conf_file->file.info); 获取 配置文件的大小 此时 file_size364 for ( ;; ) {if (b->pos > b->last) { 此时 b->pos 0x5cd4701487e4 b->last 0x5cd47014893c b->start0x5cd4701487d0 条件不成立 ch *b->pos;…...
L2范数与权重衰退
权重衰退 定义损失函数 $ \ell(\mathbf{w}, b) $ 来衡量模型的预测值与真实值的差距 使用L2范数作为硬性限制 通过限制参数值的选择范围来控制模型容量 min ℓ ( w , b ) s u b j e c t t o ∥ w ∥ 2 ≤ θ \min \ell(\mathbf{w}, b) \quad \\ subject \ to \|\mathbf{w…...
计算机组成原理笔记(十四)——3.4指令类型
一台计算机的指令系统可以有上百条指令,这些指令按其功能可以分成几种类型,下面分别介绍。 3.4.1数据传送类指令 一、核心概念与功能定位 数据传送类指令是计算机指令系统中最基础的指令类型,负责在 寄存器、主存、I/O设备 之间高效复制数…...
GM DC Monitor v2.0 数据中心监控预警平台-CMDB使用教程(第九篇)
SNMP配置管理功能使用手册 本模块主要用于导入设备厂家的mib库文件,也可以手工创建对应的oid信息,用以实现设备的被动监控功能。 另:系统部署完毕后,已经集成了个别厂家的MIB库数据。 设计思路及使用教程 设计思路:通…...
try-with-resources 详解
try-with-resources 详解 一、基本概念 try-with-resources 是 Java 7 引入的语法结构,用于自动管理资源(如文件流、数据库连接等需要关闭的对象)。 核心特点 自动资源释放:无需手动调用 close() 简洁代码:减少 tr…...
第二十四:查看当前 端口号是否被占用
查看当前 端口号是否被占用: mac 情况下: lsof -i :端口号 netstat -an | grep 端口号 系统将显示监听该端口的进程信息,包括进程名称、进程ID、用户和协议等。如果需要更多信息,可以添加-P和-n参数,例如…...
【数据结构与算法】——堆(补充)
前言 上一篇文章讲解了堆的概念和堆排序,本文是对堆的内容补充 主要包括:堆排序的时间复杂度、TOP 这里写目录标题 前言正文堆排序的时间复杂度TOP-K 正文 堆排序的时间复杂度 前文提到,利用堆的思想完成的堆排序的代码如下(包…...
【Web功能测试】Web商城搜索模块测试用例设计深度解析
Web商城的搜索模块功能测试用例设计 1.搜索功能设计 1.1 搜索框设计 位置显眼:通常置于页面顶部中央,符合用户习惯。 智能提示(Autocomplete):输入时实时推荐关键词、商品或分类(如“手机 苹果”&#x…...
ubuntu 18.04安装tomcat,zookeeper,kafka,hadoop,MySQL,maxwell
事情是这样的,因为昨天发现我用的ubuntu16.04官方不维护了,以及之前就觉得不是很好用,于是升级到了18.04。如图: 但是!由于为备份升级前忘记关闭服务,上面装好的东西所剩无几。 于是我重装了。。。 如何启…...
设计模式(结构型)-享元模式
摘要 在软件开发的广阔领域中,随着系统规模的不断膨胀,资源的有效利用逐渐成为了一个至关重要的议题。当一个系统中存在大量相似的对象时,如何优化这些对象的管理,减少内存的占用,提升系统的整体性能,成为了…...
1.1显存
显存是显卡(GPU)专用的高性能内存,负责存储渲染所需的纹理、帧缓冲、几何数据等。其设计直接影响图形性能、分辨率和复杂场景处理能力 苹果统一内存(Unified Memory)、集成显卡共享内存(Integrated Graphi…...
C# 选择文件的路径、导出文件储存路径
1、选择导入文件,获取其路径 C#通过这段代码将弹出一个文件选择对话框,允许用户选择一个文件,并返回所选文件的完整路径。如果用户取消了选择,则直接返回结束函数。 string OpenFilePath;//存储选择到的文件的完整路径OpenFileDia…...
【最后203篇系列】027 基于消息队列的处理架构
起因 之所以写这篇文章,主要是梳理一下进展。因为同时研究好几块内容,切换起来要点时间。这次也是因为协作的同事们把各自的分工都搞定了,瓶颈反而在我自己这里,哈哈。 除了帮自己思路恢复过来,我觉得这方法可能也有…...
多线程与Tkinter界面交互
在现代图形用户界面(GUI)应用程序中,可能会遇到需要长时间运行的任务,例如网络请求、数据处理或文件读取等。如果这些任务直接在主线程中运行,会导致GUI界面“卡顿”或“不响应”。为了保持界面流畅和响应用户操作,我们可以通过使用多线程来将这些任务移到后台运行。然而…...
【工程开发】LLMC准确高效的LLM压缩工具(一)
【文献阅读】LLMC: Benchmarking Large Language Model Quantization with a Versatile Compression Toolkit 北航 2024年10月 摘要 大语言模型(LLMs)的最新进展凭借其卓越的涌现能力和推理能力,正推动我们迈向通用人工智能。然而&#…...