当前位置: 首页 > news >正文

CHI协议——retry

一、核心目标

防止请求阻塞:当Completer暂时无法处理请求(比如tracker不够被占满)时,通过retry机制避免请求在 REQ  Channel堆积,确保系统流畅运行。

retry机制只存在于REQ Channel,在DAT/RSP/SNP Channel不存在

二、Retry Flow

a.允许重试的字段 AllowRetry 在第一次发送时必须置位,PCrdType必须为0(意味请求允许retry)。

b.完成者在资源不足时返回 RetryAck,并记录请求srcID和PCrdType(HN自己定即可 0-15)。

c.当资源可用时,完成者发送 PCrdGrant(包含PCrdTye)。

d.请求者收到后可以重试请求,此时 AllowRetry 必须置零(因为completer既然给Requester发了PcrdGrant就代表它有资源处理该请求了,那就不允许再retry了,所以置0),确保第二次尝试被接受。PCrdTye设置为之前分配的值。

完成者可能在发送 RetryAck 之前发送 PCrdGrant,但请求者必须等待两者都收到后才能重试。这涉及到协议中的顺序问题,虽然允许乱序到达,但请求者必须等待两者都到达才能继续。

-----------------------------------------------------------------------------------------------------------------------

举个通俗易懂的例子:以餐厅点餐为例

  1. 顾客(请求者)点餐:

    • 发送订单(请求)到厨房(完成者)
    • AllowRetry=1:允许厨房拒绝订单
  2. 厨房资源不足:

    • 厨房返回 RetryAck(“现在太忙,请等会儿再来”)
    • 记录顾客 ID(SrcID)和所需资源类型(PCrdType,如 “煎锅资源”)
  3. 厨房资源恢复:

    • 发送 PCrdGrant(“煎锅可用了”)给顾客
    • 顾客收到后重新提交订单
    • AllowRetry=0:这次必须成功
  4. 订单完成:

    • 厨房处理订单并返回结果(响应)
    • 顾客释放事务 ID(TxnID),可重复使用

-----------------------------------------------------------------------------------------------------------------------

三、PCredit Return

超额分配场景:

  1. 交易取消:首次请求发送后但未收到 RetryAck 前,交易被取消,导致预先分配的信用未被使用。

  2. 多 QoS 请求:请求者以递增 QoS 多次发起同一事务,但只需一次成功,多余信用需归还。

PCrdReturn 事务

  1. 功能

    • 本质是空操作(No Operation),仅用于归还未使用的信用。
    • 通知完成者:指定类型(PCrdType)的信用不再需要,可重新分配。
  2. 操作流程

    • 请求者通过 PCrdReturn 事务发送信用类型(PCrdType)。
    • 完成者回收该信用,更新资源池。

应用示例

假设请求者发起两次相同的高 QoS 请求(QoS1 和 QoS2),但仅需一次成功:

  1. 完成者先分配 QoS1 信用。
  2. 请求者使用 QoS2 信用成功完成事务。
  3. 请求者通过 PCrdReturn 归还 QoS1 信用,完成者回收后可分配给其他事务。

-----------------------------------------------------------------------------------------------------------------------

1. retry适用范围
  • 不适用的事务
    • PrefetchTgt(无响应事务) AllowRetry字段必须为0
    • 例如:预取指令无需确认结果,无法重试

2. 信用类型管理
  • 资源分类
    • PCrdType=0:通用资源
    • PCrdType=1:读操作专用资源
    • PCrdType=2:写操作专用资源
  • 因为可能write transaction和read transaction它两用的tracker不是一样的

3. 事务生命周期
  • 请求者需要保留请求的所有详细信息,直到收到一个响应,该响应表明请求已被接受,或者必须在稍后的某个时间点再次发送。
  • 从发送请求开始,到以下情况结束:
    • 取消请求并返回信用(PCrdReturn)
    • 收到 RetryAck+PCrdGrant 并成功重试
    • 收到所有预期响应(如 ReadReceipt)

4. TxnID 重用规则
  • 可重用时机
    • 收到 RetryAck 后(可立即重用)
    • 收到所有非 RetryAck 响应后

5. 字段一致性要求
  • retry req时必须保持相同的字段
    • Addr
    • Data
    • QoS 优先级
  • 可修改的字段

重新发送的事务必须具有与原始请求相同的字段值,除非该字段不适用,或者属于以下字段之一:

  • 服务质量(QoS)
  • 目标 ID(TgtID),请参阅 B3.3.1 中关于请求消息的目标 ID 确定规则。
  • 事务 ID(TxnID)
  • 返回事务 ID(ReturnTxnID),适用于以下情况:
    • 从主节点(Home Node)到从节点(Subordinate Node)的无窥探读取(ReadNoSnp)和无窥探分离读取(ReadNoSnpSep),且未使用数据移动事务(DMT)流。
    • 从主节点到从节点的无窥探写入(WriteNoSnp)或组合写入(Combined Write),且未使用数据写入事务(DWT)流。
  • 数据目标(DataTarget)
  • 允许重试(AllowRetry),该字段必须取消置位
  • 协议信用类型(PCrdType),该字段必须设置为原始事务的重试响应中所指定的值。
  • 跟踪标签(TraceTag)
  • 保留位(RSVDC)
  • 缓存属性提示(CAH)
  • 预取目标提示(PrefetchTgtHint)

6. CopyBack Write retry

当请求者收到针对回写(CopyBack Write)请求的重试确认(RetryAck)响应,且该请求的数据已被窥探操作无效化时,请求者可以选择以下两种操作之一:

  • 放弃写入请求并返回已收到的信用。
  • 将允许重试字段设置为 0 后发送写入请求,并知道后续的数据响应将是无效回写数据(CopyBackWriteData_I)。

信用与特定事务之间没有固定的关系。如果请求者针对不同事务收到了多个重试确认响应,然后又收到了一个信用,则不存在固定的信用分配方式。请求者可以从收到具有该特定协议信用类型的重试确认响应的事务列表中,自由选择最合适的事务。

重试机制最多支持 16 种不同的信用类型。这使得完成者可以针对不同的资源使用不同的信用类型。例如,完成者可以对与读取事务相关的资源使用一种信用类型,对写入事务使用另一种信用类型。通过使用不同的信用类型,完成者能够通过控制哪些重试请求可以再次发送,来高效地管理其资源。

完成者必须能够记录所有的重试确认响应,以确保信用得到正确分配。如果完成者使用了多种信用类型,则必须记录针对每种信用类型给出的重试确认响应。

请求者必须限制已发出事务的数量,以确保完成者无需跟踪超过 1024 个需要授予协议信用响应的事务。这可以通过将每个请求者的未完成事务的最大数量限制为 1024 来实现。

一个事务从首次发出请求的周期开始,一直处于未完成状态,直到出现以下两种情况之一:

  • 事务完全完成,即收到了该事务预期的所有以下响应:
    • 读取回执(ReadReceipt)
    • 完成数据(CompData)
    • 响应分离数据(RespSepData)
    • 数据分离响应(DataSepResp)
    • 设备标识符响应(DBIDResp*)
    • 完成(Comp)、完成一致性修改操作(CompCMO)、完成持久化操作(CompPersist)和完成缓存隐藏操作(CompStashDone)
    • 完成设备标识符响应(CompDBIDResp)
  • 收到重试确认和授予协议信用响应,并且请求满足以下情况之一:
    • 使用适当协议信用类型的信用进行重试,随后根据所有响应的返回情况确定事务已完全完成。
    • 取消事务,并使用信用返回(PCrdReturn)消息返回已收到的信用。

请求者可以在以下两种情况下重用请求所使用的事务 ID 值:

  • 一旦针对该请求收到重试确认响应。
  • 如果收到的响应是非重试确认响应,一旦针对该请求收到所有必需的响应。

相关文章:

CHI协议——retry

一、核心目标 防止请求阻塞:当Completer暂时无法处理请求(比如tracker不够被占满)时,通过retry机制避免请求在 REQ Channel堆积,确保系统流畅运行。 retry机制只存在于REQ Channel,在DAT/RSP/SNP Channel不存在 二、Retry Flow…...

在linux部署网站

在Linux部署网站,需要准备一个纯净的系统 一、系统环境准备 1.设置静态IP地址 ‌ 2.关闭默认防火墙 systemctl disable firewalld --now ‌ 3.配置SSH密钥登录 4.yum update -y && reboot # 更新系统内核 5.yum install -y wget curl unzip # 安装…...

语义网是什么

语义网(Semantic Web)是由万维网发明者 蒂姆伯纳斯-李(Tim Berners-Lee) 在20世纪90年代末提出的概念,目标是让互联网上的数据不仅对人类可读,还能被机器自动理解、关联和推理。它通过为数据添加明确的语义…...

51单片机

本文来源:腾讯元宝 51单片机是对所有兼容Intel 8031指令系统的8位单片机的统称,其技术起源于1981年Intel推出的8051内核微控制器(Micro Control Unit)。作为嵌入式系统领域的经典代表,它具有以下核心特点和应用价值: 一、技术特…...

初2数学-1.勾股定理

复习勾股定理: 1. ; 2. ; 3. ; 4. 后面3个式子都是根据相似三角形对应边成比例推出来的。 第4个式子来做例子: 三角形CBD与三角形 ACD相似,所以: h:c2 c1 : h. 【例题] ABCD为菱形,边长为…...

Java条码与二维码生成技术详解

一、技术选型分析 1.1 条码生成方案 Barbecue是最成熟的Java条码库,支持: Code 128EAN-13/UPC-AUSPS Inteligent Mail等12种工业标准格式 1.2 二维码方案对比 库名称维护状态复杂度功能扩展性ZXing★★★★☆较高强QRGen★★★☆☆简单一般BoofCV★…...

Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)

Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例) 前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Spring Boot 观察定时任务执行5. Quartz Cron 表达式详解6. 结论 前言 在 Spring Boot 项目中,我们经常…...

数智读书笔记系列025《智能医疗:医学人工智能的未来》

一、书籍概述与核心价值 1.1 书籍定位与影响力 《智能医疗:医学人工智能的未来》在智能医疗领域占据着独特且重要的位置,作为首部由德勤管理咨询引进的 AI 医疗译著,它宛如一座桥梁,连接了人工智能与生物医学这两个看似独立却又紧密关联的领域。在当下智能医疗蓬勃发展但…...

SQL Server 2022常见问题解答

以下是SQL Server 2022的常见问题解答,按主题分类整理: 一、安装与升级 SQL Server 2022的系统要求是什么? 支持的操作系统:Windows Server 2016及以上、Linux(Ubuntu 20.04/22.04, RHEL 8/9等)。内存:至少4GB(建议8GB+)。磁盘空间:6GB以上,具体取决于安装组件。如何…...

SQLAlchemy关键词搜索技术深度解析:从基础过滤到全文检索

在数据驱动的应用开发中,基于关键词的模糊查询是常见的业务需求。SQLAlchemy作为Python生态中最流行的ORM框架,提供了多种实现关键词搜索的技术方案。本文将从性能、适用场景和技术复杂度三个维度,系统对比分析SQLAlchemy中关键词搜索的最佳实…...

react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析

一、React 15(2016) 核心架构:Stack Reconciler(栈协调器) 工作原理: 同步递归渲染:采用深度优先遍历方式递归处理 Virtual DOM,形成不可中断的调用栈渲染流程:1. 触发 …...

[Windows] Edge浏览器_134.0.3124.83绿色便携增强版-集成官方Deepseek侧边栏

微软Edge浏览器 绿色便携增强版 长期更新 链接:https://pan.xunlei.com/s/VOMA-aVC_GPJiv-MzRS89lsVA1?pwdemxj# Edge浏览器_134.0.3124.83绿色便携增强版-集成官方Deepseek侧边栏...

STM32学习笔记之存储器映射(原理篇)

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...

探索PyMOL新插件NRGSuite-Qt:全面提升分子对接、结合位点预测与动力学模拟的研究效率

随着分子建模和计算生物学的快速发展,分子对接(Molecular Docking)、结合位点预测、相互作用分析以及动力学研究等领域的工具越来越重要。这些工具不仅帮助研究人员理解分子间的相互作用机制,还能加速药物设计和优化过程。NRGSuit…...

c#在work线程中怎样更新UI控件

最近笔者调试修改项目,碰到了c#在work线程中怎样更新UI控件中的场景,简单总结了下,主要有两个方法: 方法1:通过System.Windows.Application.Current.Dispatcher.Invoke来更新UI控件 System.Windows.Application.Curre…...

DeepSeek、Grok 与 ChatGPT 4.5:新一代大模型架构与推理能力深度解析

近年来,大语言模型(LLM)领域发展迅猛,DeepSeek、Grok 以及 OpenAI 最新发布的 ChatGPT 4.5 都是该领域的代表性产品。本文将从架构设计、推理能力、训练策略等方面,对三者进行技术对比,探讨其优势与潜在的应…...

从零基础到 Java 网站项目开发学习规划​

在数字化时代,Java 凭借其卓越的跨平台性、强大的功能和丰富的类库,成为开发各类网站的主流编程语言。对于想要踏入 Java 网站开发领域的初学者而言,一份系统、科学的学习规划至关重要。它不仅能帮助我们有条不紊地掌握知识和技能&#xff0c…...

Unity Shader 学习17:合批渲染

一、基础概念 合批主要是针对这三个概念进行优化减少: ① SetPass Call:一次渲染状态切换,也就是每次切换 材质/Pass 时,就会触发一次SetPass Call ② Draw Call:cpu 调用一次 gpu 绘制函数 ③ Batch:表示…...

【JavaSE】抽象类和接口

【JavaSE】抽象类和接口 前言:补充知识 —— 利用类和对象,交换两个数字 一、抽象类1.1 抽象类是什么?1.2 抽象类特点1.3 抽象类举例1.4 抽象类作用 二、接口2.1 接口是什么?2.2 接口的特性2.3 接口的使用规则2.4 类可以实现多个接…...

嵌入式单片机程序的映像文件解读

映像文件类型 单片机下载程序的映像文件是包含了可执行代码、数据等信息,用于将程序烧录到单片机中的文件。常见的映像文件种类如下: 十六进制文件(Hex 文件) 格式特点:Hex 文件是一种文本格式的文件,以 ASCII 字符形式存储数据。它由一系列的记录组成,每条记录包含一个…...

在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 MineCraft 服务器,并实现远程联机,详细教程

Linux 部署 MineCraft 服务器 详细教程(丐版,无需云服务器) 一、虚拟机 Ubuntu 部署二、下载 Minecraft 服务端三、安装 JRE 21四、安装 MCS manager 面板五、搭建服务器六、本地测试连接七、下载樱花,实现内网穿透,邀…...

STL之string

1.为什么学习string类 1.1 C语言中的字符串 C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数, 但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且…...

cJSON-轻量级 C 语言 JSON 解析库的使用(一)

文章目录 cJSON:轻量级 C 语言 JSON 解析库的使用前言一、cJSON 简介核心特点: 二、核心数据结构解析三、深入解析 API 设计1. 解析 JSON2. 访问数据3. 构建 JSON 四、内存管理策略五、高级应用技巧1. 引用系统2. 批量操作3. 原地修改 六、性能优化技巧1…...

用Python和Stable Diffusion生成AI动画:从图像到视频的全流程指南

引言 本文将演示如何通过Python代码实现基于文本提示的AI动画生成。我们将使用Stable Diffusion生成连贯图像帧,结合OpenCV合成视频,最终实现一个可自定义的动画生成 pipeline。 一、环境准备 1. 依赖安装 # 安装核心库 pip install diffusers transformers torch numpy …...

C++ 继承:面向对象编程的核心概念(二)

文章目录 5. 继承与友元6. 继承与静态成员7. 多继承及其菱形继承问题7.1 不同的继承方式7.2 虚继承 8. 继承和组合9. 总结 书接上回:C 继承:面向对象编程的核心概念(一) 5. 继承与友元 友元关系不能继承,也就是说基类友元不能访问…...

Chaos Mesh 混沌工程平台介绍、安装及使用指南

Chaos Mesh 混沌工程平台介绍、安装及使用指南 一、Chaos Mesh 简介 Chaos Mesh 是 PingCAP 开源的云原生混沌工程平台,支持在 Kubernetes 环境中模拟各种故障场景,帮助提升系统的容错性和可恢复性。 核心特性 丰富的故障类型: 资源类&…...

每天五分钟深度学习框架PyTorch:梯度裁剪解决RNN梯度爆炸的问题

本文重点 在循环神经网络训练的过程中,有时候很容易出现梯度爆炸的情况,如果出现这种问题,我们应该怎么办?本文先来分析一下为什么会出现这种情况,然后我们在给出解决方案 梯度爆炸的原因 我们从RNN训练的反向传播算法入手,当我们使用BPTT算法训练RNN的时候,它的公式…...

批量删除 PDF 中的所有图片、所有二维码图片以及指定的某张图片

PDF 文档中我们可以插入图片、文字等多种类型的资源。在某些场景下,可能我们需要删除 PDF 文档中的图片,有可能是需要删除所有的图片,也有可能是删除固定的某些图片。那碰到这种情况,我们应该怎么处理呢?今天就给大家介…...

力扣HOT100之普通数组:53. 最大子数组和

这道题目我用贪心做的,感觉用贪心的思路比较简单,以后要是面试碰到这道题就直接用贪心好了,这道题用贪心的核心思想就是不断将数组元素i加入总和sum,如果sum比当前维护的最大值result更大,说明当前遍历到的i是正数&…...

【Qt】C++前向声明与Qt信号与槽的区别

相同点:二者都可以解决头文件相互包含的问题 一、C 前向声明 概念:前向声明是在代码里仅仅声明一个类、函数或者变量,而不给出其完整定义。例如class MyClass; 就是对 MyClass 类的前向声明。 作用:主要是为了降低编译依赖&…...

SQL-木马植入、报错注入及其他

一、读写权限确认 show global variables like %secure%; 查看mysql全局变量的配置,当输入以上命令时,结果 secure_file_priv 空的时候,任意读写 secure_file_priv 某个路径的时候,只能在规定的那个路径下读写 secure_file_pri…...

基于 PHP 内置类及函数的免杀 WebShell

前言 PHP 作为广泛使用的服务端语言,其灵活的内置类(如 DOMDocument)和文件操作机制(.ini、.inc 的自动加载),为攻击者提供了天然的隐蔽通道。通过 动态函数拼接、反射调用、加密混淆 和 伪命名空间 等手法…...

主键id设计

主键自增id 🌱 1. 自增 ID(Auto Increment ID) ✅ 特点: • 数据库自带(MySQL, PostgreSQL 都支持) • 简单易用,可读性强 • 一般作为主键自带聚簇索引(主键就是物理存储顺序&…...

文件上传绕过的小点总结(6)

14.文件上传(文件包含漏洞)二次渲染 很多服务器为了防止代码嵌入图片,通常会将上传的图片进行重新生成处理,包括文件格式转换等等,嵌入的恶意代码很容易被改掉。于是产生了二次渲染,二次渲染的原理就是找到…...

传统应用容器化迁移实践

背景介绍:从传统部署到容器化迁移的必要性 在过去的运维工作中,某企业一直依赖于传统的物理机和虚拟机部署方式。然而,随着业务的快速发展和应用规模的不断扩大,传统部署方式的局限性逐渐显现: 资源利用率低&#xf…...

混境之地1

问题描述 小蓝有一天误入了一个混境之地。 好消息是:他误打误撞拿到了一张地图,并从中获取到以下信息: 混境之地的大小为 n⋅mn⋅m,其中 # 表示这个位置很危险,无法通行,. 表示道路,可以通行。他…...

LLM 加速技术有哪些

LLM 加速技术有哪些 目录 LLM 加速技术有哪些量化(Quantization)基本原理举例剪枝(Pruning)基本原理举例动态Shape(Dynamic Shape)基本原理举例算子融合(Operator Fusion)基本原理举例量化(Quantization) 基本原理 量化是指将模型中连续取值(如32位浮点数)的参数…...

CPP从入门到入土之类和对象Ⅲ

拷贝构造函数 拷贝构造函数是一个已经存在的对象去初始化一个新的对象时,调用的函数 例如: 假设我有一个盒子,里面装了一个苹果 拷贝构造函数的特点 拷贝构造函数是构造函数的一个重载拷贝构造函数的第一个参数必须是类类型对象的引用,例如…...

安全上网沙箱:多方面解决政企私的上网问题

在数字化的浪潮中,网络已成为我们工作与生活不可或缺的一部分。然而,网络的便捷也伴随着诸多安全隐患,尤其是对于企业、个人以及政企机构而言,安全上外网成为了至关重要的课题。 隔离保护:构建安全堡垒 沙箱技术在内网…...

空转 | GetAssayData doesn‘t work for multiple layers in v5 assay.

问题分析 当我分析多个样本的时候,而我的seurat又是v5时,通常就会出现这样的报错。 错误的原因有两个: 一个是参数名有slot变成layer 一个是GetAssayData 不是自动合并多个layers,而是选择保留。 那么如果我们想合并多个样本&…...

26、web前端开发之CSS3(三)

5. 文本(Text) CSS3大大增强了对文本样式和排版的控制,使得网页设计更加灵活和多样化。本讲详细介绍CSS3中常用的文本相关属性,包括文本对齐、字体大小、行高、字母间距、单词拆分、溢出隐藏等,帮助开发者更好地控制和…...

第 8 章:使用更好的库_《C++性能优化指南》_notes

使用更好的库 第八章核心知识点解析编译与测试建议总结优化原则重点内容:第一部分:多选题(10题)第二部分:设计题答案与解析多选题答案:设计题答案示例(部分): 测试用例设…...

【面试八股】:常见的锁策略

常见的锁策略 synchronized (标准库的锁不够你用了)锁策略和 Java 不强相关,其他语言涉及到锁,也有这样的锁策略。 1. 悲观锁,乐观锁(描述的加锁时遇到的场景) 悲观锁:预测接下来…...

Apache Iceberg 解析,一文了解Iceberg定义、应用及未来发展

什么是 Iceberg? Apache Iceberg 是一种开源的 表格式(Table Format) ,专为超大规模数据分析场景设计,通过标准化数据存储规范与访问协议,解决了传统数据湖在元数据管理、事务控制、查询性能等方面的核心痛…...

Ubuntu 优化启动时间优化

优化 Ubuntu 20.04 的启动时间可以从多个方面入手,以下是详细的步骤和建议: 一、分析启动耗时 首先检查系统启动各阶段的耗时: systemd-analyze time # 查看整体启动时间 systemd-analyze blame # 列出各服务/进程的启动耗时 …...

【Git 常用指令速查表】

Git 常用指令速查表 Git 常用指令速查表目录1. 初始化仓库2. 提交代码流程3. 分支管理4. 远程仓库操作5. 撤销操作6. 查看状态与日志7. 其他实用指令完整操作示例常用场景速查表 Git 常用指令速查表 目录 初始化仓库提交代码流程分支管理远程仓库操作撤销操作查看状态与日志其…...

Linux实用操作及命令

一、各类小技巧(快捷键) 1、强制停止(ctrlc) Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl c 命令输入错误,也可以通过快捷键ctrl c,退出当前输入,重…...

洛谷 P10516 数据结构 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​) 和 b ( b 1 , b 2 , ⋯ , b n ) b(b_1,b_2,\cdots,b_n) b(b1​,b2​,⋯,bn​),有 m m m 个操作分三种: add ⁡ ( l , r , k , t ) \operatorname{ad…...

在IDEA中使用TortoiseSVN

一、前言 原版SVN由于下载路径中没有svn.exe文件,导致IDEA中无法使用命令行提交项目代码,因此,现在卸载旧版本TortoiseSVN,下载附有svn.exe的新版TortoiseSVN,下载使用过程记录如下 二、下载过程 卸载就在 控制面板…...

基于 ffmpeg 实现合并视频

ffmpeg是一个强大的多媒体处理工具,支持视频文件的合并。 列出目录下所有MP4文件 import os import glob# 当前目录 directory os.getcwd() directory "/directory/to/mp4/*"# 列出目录下所有MP4文件 files glob.glob(directory)# 排序 files.sort(…...