刚开始阅读 《Akka IN ACTION》这本书,刚开始是对 Revolution 这个词翻译成中文是 革命 感到诧异,因为 革命 通俗来讲就是 杀人 的意思。至于 Revolution 英文解释不深究了,只是感叹何以颠覆性的变化就一定要杀人呢?

也由此引出了编程中经常面对的 Concurrent (名词为:Concurrency) 和 Parallel (名词为:Parallelism) 这两个词,基本上是认为它们是同一个意思。其实不然,下面慢慢道来。

如果从英文字典对它们的解释也没有多大区别,差不多都是说同是发生,但字面上 Parallel 多了一个平行的意思。所以在中文上,在计算机领域我们约定的翻译是

  • Concurrent(Concurrency)  --  并发
  • Parallel(Parallelism)            --  并行

比如在多线程环境中它们的区别具体体现在:

并发 :多个任务在同一个 CPU 核上按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。针对 CPU 内核来说,任务仍然是按细粒度的串行执行。也难怪在 Java 5 中新加的并发 API 的包名是 java.uti.concurrent 阅读全文 >>

刚开始阅读 《Akka IN ACTION》这本书,刚开始是对 Revolution 这个词翻译成中文是革命 感到诧异,因为革命 通俗来讲就是 杀人 的意思。至于 Revolution 英文解释不深究了,只是感叹何以颠覆性的变化就一定要杀人呢?也由此引出了编程中经常面对的 Concurrent(名词为:Concurrency) 和 Parallel(名词为:Parallelism) 这两个词,基本... 您想淋漓尽致地发挥多核计算机系统的处理能力吗?《C# 并行 编程高级教程:精通NET 4 Parallel Extensions》将帮助您实现这一夙愿。这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的 并行 应用程序,详细讲述最新的单指令、多数据流指令和向量化等 并行 编程技术,介绍现代 并行 库,讨论如何珠联璧合地使用高级Intel工具与C#,并指导您巧妙使用新引入的轻型协调结构来开发自己的解决方案并解决最棘手的 并发 编程问题。 ◆介绍如何基于新Task Parallel Library和.NET 4设计稳定的可扩展 并行 应用程序。 ◆讲解命令式数据 并行 、命令式任务 并行 并发 集合以及协调数据结构。 ◆描述PLINQ高级声明式数据 并行 。 ◆讨论如何使用新的Visual Studio 2010 并行 调试功能来调试匿名方法、任务和线程。 ◆演示如何对数据源进行分区,以便在不同任务和线程之间合理分配工作负荷。 Caston C.Hillar是一位独立软件咨询师,自1997年起便一直从事 并行 编程、多处理器和多核领域的研究,Gaston拥有使用C#和.NET Framework来设计和开发各种复杂 并行 解决方案的丰富经验,曾于2009年荣膺Intel Black Belt Software Developer奖。 第1章 基于任务的程序设计 1.1 使用共享内存的多核系统 1.1.1 共享内存多核系统与分布式内存系统之间的 区别 1.1.2 并行 程序设计和多核程序设计 1.2 理解硬件线程和软件线程 1.3 理解Amdahl法则 1.4 考虑Gustafson法则 1.5 使用轻量级 并发 模型 1.6 创建成功的基于任务的设计 1.6.1 以 并发 的思想指导设计 1.6.2 理解交错 并发 并发 并行 之间的 区别 1.6.3 并行 化任务 1.6.4 尽量减少临界区 1.6.5 理解多核 并行 程序的设计原则 1.7 为NUMA架构和更高的可扩展性做好准备 1.8 判断是否适合 并行 化 1.9 小结 第2章 命令式数据 并行 2.1 加载 并行 任务 2.1.1 System.Threading.Tasks. Parallel 类 2.1.2 Parallel .Invoke 2.2 将串行代码转换为 并行 代码 2.2.1 检测可 并行 化的热点 2.2.2 测量 并行 执行的加速效果 2.2.3 理解 并发 执行 2.3 循环 并行 化 2.3.1 Parallel .For 2.3.2 Parallel .ForEach 2.3.3 从 并行 循环中退出 2.4 指定 并行 度 2.4.1 Parallel Options 2.4.2 计算硬件线程 2.4.3 逻辑内核并不是物理内核 2.5 通过甘特图检测临界区 2.6 小结 第3章 命令式任务 并行 3.1 创建和管理任务 3.1.1 System.Threading.Tasks.Task 3.1.2 理解Task状态和生命周期 3.1.3 通过使用任务来对代码进行 并行 化 3.1.4 等待任务完成 3.1.5 忘记复杂的线程 3.1.6 通过取消标记取消任务 3.1.7 从任务返回值 3.1.8 TaskCreationOptions 3.1.9 通过延续串联多个任务 3.1.10 编写适应 并发 并行 的代码 3.2 小结 第4章 并发 集合 4.1 理解 并发 集合提供的功能 4.1.1 System.Collections.Con current 4.1.2 Con current Queue 4.1.3 理解 并行 的生产者-消费者模式 4.1.4 Con current Stack 4.1.5 将使用数组和不安全集合的代码转换为使用 并发 集合的代码 4.1.6 Con current Bag 4.1.7 IProducerConsumerCollection 4.1.8 BlockingCollection 4.1.9 Con current Dictionary 4.2 小结 第5章 协调数据结构 5.1 通过汽车和车道理解 并发 难题 5.1.1 非预期的副作用 5.1.2 竞争条件 5.1.3 死锁 5.1.4 使用原子操作的无锁算法 5.1.5 使用本地存储的无锁算法 5.2 理解新的同步机制 5.3 使用同步原语 5.3.1 通过屏障同步 并发 任务 5.3.2 屏障和ContinueWhenAll 5.3.3 在所有的参与者任务中捕捉异常 5.3.4 使用超时 5.3.5 使用动态数目的参与者 5.4 使用互斥锁 5.4.1 使用Monitor 5.4.2 使用锁超时 5.4.3 将代码重构为避免使用锁 5.5 将自旋锁用作互斥锁原语 5.5.1 使用超时 5.5.2 使用基于自旋的等待 5.5.3 自旋和处理器出让 5.5.4 使用volatile修饰符 5.6 使用轻量级的手动重置事件 5.6.1 使用ManualResetEventSlim进行自旋和等待 5.6.2 使用超时和取消 5.6.3 使用ManualResetEvent 5.7 限制资源的 并发 访问 5.7.1 使用SemaphoreSlim 5.7.2 使用超时和取消 5.7.3 使用 Semaphore 5.8 通过CountdownEvent简化动态fork和join场景 5.9 使用原子操作 5.10 小结 第6章 PLINQ:声明式数据 并行 6.1 从LINQ转换到PLINQ 6.1.1 Parallel Enumerable及其As Parallel 方法 6.1.2 AsOrdered和orderby子句 6.2 指定执行模式 6.3 理解PLINQ中的数据分区 6.4 通过PLINQ执行归约操作 6.5 创建自定义的PLINQ聚合函数 6.6 并发 PLINQ任务 6.7 取消PLINQ 6.8 指定所需的 并行 度 6.8.1 WithDegreeOf Parallel ism 6.8.2 测量可扩展性 6.9 使用ForAll 6.9.1 foreach和ForAll的 区别 6.9.2 测量可扩展性 6.10 通过WithMergeOptions配置返回结果的方式 6.11 处理PLINQ抛出的异常 6.12 使用PLINQ执行MapReduce算法 6.13 使用PLINQ设计串行多步操作 6.14 小结 第7章 Visual Studio 2010的任务调试能力 7.1 充分利用多显示器的支持 7.2 理解 并行 任务调试器窗口 7.3 查看 Parallel Stacks图 第8章 线程池 第9章 异步编程模型 第10章 并行 测试和调优 第11章 向量化、SIMD指令以及其他 并行 库 附录A .NET 4中与 并行 相关的类图 附录B 并发 UML模型 附录C Parallel Extensions Extras 您想淋漓尽致地发挥多核计算机系统的处理能力吗?《C# 并行 编程高级教程:精通NET 4 Parallel Extensions》将帮助您实现这一夙愿。这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的 并行 应用程序,详细讲述最新的单指令、多数据流指令和向量化等 并行 编程技术,介绍现代 并行 库,讨论如何珠联璧合地使用高级Intel工具与C#,并指导您巧妙使用新引入的轻型协调结构来开发自己的解决方案并解决最棘手的 并发 编程问题。 ◆介绍如何基于新Task Parallel Library和.NET 4设计稳定的可扩展 并行 应用程序。 ◆讲解命令式数据 并行 、命令式任务 并行 并发 集合以及协调数据结构。 ◆描述PLINQ高级声明式数据 并行 。 ◆讨论如何使用新的Visual Studio 2010 并行 调试功能来调试匿名方法、任务和线程。 ◆演示如何对数据源进行分区,以便在不同任务和线程之间合理分配工作负荷。 Caston C.Hillar是一位独立软件咨询师,自1997年起便一直从事 并行 编程、多处理器和多核领域的研究,Gaston拥有使用C#和.NET Framework来设计和开发各种复杂 并行 解决方案的丰富经验,曾于2009年荣膺Intel Black Belt Software Developer奖。 第1章 基于任务的程序设计 1.1 使用共享内存的多核系统 1.1.1 共享内存多核系统与分布式内存系统之间的 区别 1.1.2 并行 程序设计和多核程序设计 1.2 理解硬件线程和软件线程 1.3 理解Amdahl法则 1.4 考虑Gustafson法则 1.5 使用轻量级 并发 模型 1.6 创建成功的基于任务的设计 1.6.1 以 并发 的思想指导设计 1.6.2 理解交错 并发 并发 并行 之间的 区别 1.6.3 并行 化任务 1.6.4 尽量减少临界区 1.6.5 理解多核 并行 程序的设计原则 1.7 为NUMA架构和更高的可扩展性做好准备 1.8 判断是否适合 并行 化 1.9 小结 第2章 命令式数据 并行 2.1 加载 并行 任务 2.1.1 System.Threading.Tasks. Parallel 类 2.1.2 Parallel .Invoke 2.2 将串行代码转换为 并行 代码 2.2.1 检测可 并行 化的热点 2.2.2 测量 并行 执行的加速效果 2.2.3 理解 并发 执行 2.3 循环 并行 化 2.3.1 Parallel .For 2.3.2 Parallel .ForEach 2.3.3 从 并行 循环中退出 2.4 指定 并行 度 2.4.1 Parallel Options 2.4.2 计算硬件线程 2.4.3 逻辑内核并不是物理内核 2.5 通过甘特图检测临界区 2.6 小结 第3章 命令式任务 并行 3.1 创建和管理任务 3.1.1 System.Threading.Tasks.Task 3.1.2 理解Task状态和生命周期 3.1.3 通过使用任务来对代码进行 并行 化 3.1.4 等待任务完成 3.1.5 忘记复杂的线程 3.1.6 通过取消标记取消任务 3.1.7 从任务返回值 3.1.8 TaskCreationOptions 3.1.9 通过延续串联多个任务 3.1.10 编写适应 并发 并行 的代码 3.2 小结 第4章 并发 集合 4.1 理解 并发 集合提供的功能 4.1.1 System.Collections.Con current 4.1.2 Con current Queue 4.1.3 理解 并行 的生产者-消费者模式 4.1.4 Con current Stack 4.1.5 将使用数组和不安全集合的代码转换为使用 并发 集合的代码 4.1.6 Con current Bag 4.1.7 IProducerConsumerCollection 4.1.8 BlockingCollection 4.1.9 Con current Dictionary 4.2 小结 第5章 协调数据结构 5.1 通过汽车和车道理解 并发 难题 5.1.1 非预期的副作用 5.1.2 竞争条件 5.1.3 死锁 5.1.4 使用原子操作的无锁算法 5.1.5 使用本地存储的无锁算法 5.2 理解新的同步机制 5.3 使用同步原语 5.3.1 通过屏障同步 并发 任务 5.3.2 屏障和ContinueWhenAll 5.3.3 在所有的参与者任务中捕捉异常 5.3.4 使用超时 5.3.5 使用动态数目的参与者 5.4 使用互斥锁 5.4.1 使用Monitor 5.4.2 使用锁超时 5.4.3 将代码重构为避免使用锁 5.5 将自旋锁用作互斥锁原语 5.5.1 使用超时 5.5.2 使用基于自旋的等待 5.5.3 自旋和处理器出让 5.5.4 使用volatile修饰符 5.6 使用轻量级的手动重置事件 5.6.1 使用ManualResetEventSlim进行自旋和等待 5.6.2 使用超时和取消 5.6.3 使用ManualResetEvent 5.7 限制资源的 并发 访问 5.7.1 使用SemaphoreSlim 5.7.2 使用超时和取消 5.7.3 使用 Semaphore 5.8 通过CountdownEvent简化动态fork和join场景 5.9 使用原子操作 5.10 小结 第6章 PLINQ:声明式数据 并行 6.1 从LINQ转换到PLINQ 6.1.1 Parallel Enumerable及其As Parallel 方法 6.1.2 AsOrdered和orderby子句 6.2 指定执行模式 6.3 理解PLINQ中的数据分区 6.4 通过PLINQ执行归约操作 6.5 创建自定义的PLINQ聚合函数 6.6 并发 PLINQ任务 6.7 取消PLINQ 6.8 指定所需的 并行 度 6.8.1 WithDegreeOf Parallel ism 6.8.2 测量可扩展性 6.9 使用ForAll 6.9.1 foreach和ForAll的 区别 6.9.2 测量可扩展性 6.10 通过WithMergeOptions配置返回结果的方式 6.11 处理PLINQ抛出的异常 6.12 使用PLINQ执行MapReduce算法 6.13 使用PLINQ设计串行多步操作 6.14 小结 第7章 Visual Studio 2010的任务调试能力 7.1 充分利用多显示器的支持 7.2 理解 并行 任务调试器窗口 7.3 查看 Parallel Stacks图 第8章 线程池 第9章 异步编程模型 第10章 并行 测试和调优 第11章 向量化、SIMD指令以及其他 并行 库 附录A .NET 4中与 并行 相关的类图 附录B 并发 UML模型 附录C Parallel Extensions Extras 您想淋漓尽致地发挥多核计算机系统的处理能力吗?《C# 并行 编程高级教程:精通NET 4 Parallel Extensions》将帮助您实现这一夙愿。这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的 并行 应用程序,详细讲述最新的单指令、多数据流指令和向量化等 并行 编程技术,介绍现代 并行 库,讨论如何珠联璧合地使用高级Intel工具与C#,并指导您巧妙使用新引入的轻型协调结构来开发自己的解决方案并解决最棘手的 并发 编程问题。 ◆介绍如何基于新Task Parallel Library和.NET 4设计稳定的可扩展 并行 应用程序。 ◆讲解命令式数据 并行 、命令式任务 并行 并发 集合以及协调数据结构。 ◆描述PLINQ高级声明式数据 并行 。 ◆讨论如何使用新的Visual Studio 2010 并行 调试功能来调试匿名方法、任务和线程。 ◆演示如何对数据源进行分区,以便在不同任务和线程之间合理分配工作负荷。 Caston C.Hillar是一位独立软件咨询师,自1997年起便一直从事 并行 编程、多处理器和多核领域的研究,Gaston拥有使用C#和.NET Framework来设计和开发各种复杂 并行 解决方案的丰富经验,曾于2009年荣膺Intel Black Belt Software Developer奖。 第1章 基于任务的程序设计 1.1 使用共享内存的多核系统 1.1.1 共享内存多核系统与分布式内存系统之间的 区别 1.1.2 并行 程序设计和多核程序设计 1.2 理解硬件线程和软件线程 1.3 理解Amdahl法则 1.4 考虑Gustafson法则 1.5 使用轻量级 并发 模型 1.6 创建成功的基于任务的设计 1.6.1 以 并发 的思想指导设计 1.6.2 理解交错 并发 并发 并行 之间的 区别 1.6.3 并行 化任务 1.6.4 尽量减少临界区 1.6.5 理解多核 并行 程序的设计原则 1.7 为NUMA架构和更高的可扩展性做好准备 1.8 判断是否适合 并行 化 1.9 小结 第2章 命令式数据 并行 2.1 加载 并行 任务 2.1.1 System.Threading.Tasks. Parallel 类 2.1.2 Parallel .Invoke 2.2 将串行代码转换为 并行 代码 2.2.1 检测可 并行 化的热点 2.2.2 测量 并行 执行的加速效果 2.2.3 理解 并发 执行 2.3 循环 并行 化 2.3.1 Parallel .For 2.3.2 Parallel .ForEach 2.3.3 从 并行 循环中退出 2.4 指定 并行 度 2.4.1 Parallel Options 2.4.2 计算硬件线程 2.4.3 逻辑内核并不是物理内核 2.5 通过甘特图检测临界区 2.6 小结 第3章 命令式任务 并行 3.1 创建和管理任务 3.1.1 System.Threading.Tasks.Task 3.1.2 理解Task状态和生命周期 3.1.3 通过使用任务来对代码进行 并行 化 3.1.4 等待任务完成 3.1.5 忘记复杂的线程 3.1.6 通过取消标记取消任务 3.1.7 从任务返回值 3.1.8 TaskCreationOptions 3.1.9 通过延续串联多个任务 3.1.10 编写适应 并发 并行 的代码 3.2 小结 第4章 并发 集合 4.1 理解 并发 集合提供的功能 4.1.1 System.Collections.Con current 4.1.2 Con current Queue 4.1.3 理解 并行 的生产者-消费者模式 4.1.4 Con current Stack 4.1.5 将使用数组和不安全集合的代码转换为使用 并发 集合的代码 4.1.6 Con current Bag 4.1.7 IProducerConsumerCollection 4.1.8 BlockingCollection 4.1.9 Con current Dictionary 4.2 小结 第5章 协调数据结构 5.1 通过汽车和车道理解 并发 难题 5.1.1 非预期的副作用 5.1.2 竞争条件 5.1.3 死锁 5.1.4 使用原子操作的无锁算法 5.1.5 使用本地存储的无锁算法 5.2 理解新的同步机制 5.3 使用同步原语 5.3.1 通过屏障同步 并发 任务 5.3.2 屏障和ContinueWhenAll 5.3.3 在所有的参与者任务中捕捉异常 5.3.4 使用超时 5.3.5 使用动态数目的参与者 5.4 使用互斥锁 5.4.1 使用Monitor 5.4.2 使用锁超时 5.4.3 将代码重构为避免使用锁 5.5 将自旋锁用作互斥锁原语 5.5.1 使用超时 5.5.2 使用基于自旋的等待 5.5.3 自旋和处理器出让 5.5.4 使用volatile修饰符 5.6 使用轻量级的手动重置事件 5.6.1 使用ManualResetEventSlim进行自旋和等待 5.6.2 使用超时和取消 5.6.3 使用ManualResetEvent 5.7 限制资源的 并发 访问 5.7.1 使用SemaphoreSlim 5.7.2 使用超时和取消 5.7.3 使用 Semaphore 5.8 通过CountdownEvent简化动态fork和join场景 5.9 使用原子操作 5.10 小结 第6章 PLINQ:声明式数据 并行 6.1 从LINQ转换到PLINQ 6.1.1 Parallel Enumerable及其As Parallel 方法 6.1.2 AsOrdered和orderby子句 6.2 指定执行模式 6.3 理解PLINQ中的数据分区 6.4 通过PLINQ执行归约操作 6.5 创建自定义的PLINQ聚合函数 6.6 并发 PLINQ任务 6.7 取消PLINQ 6.8 指定所需的 并行 度 6.8.1 WithDegreeOf Parallel ism 6.8.2 测量可扩展性 6.9 使用ForAll 6.9.1 foreach和ForAll的 区别 6.9.2 测量可扩展性 6.10 通过WithMergeOptions配置返回结果的方式 6.11 处理PLINQ抛出的异常 6.12 使用PLINQ执行MapReduce算法 6.13 使用PLINQ设计串行多步操作 6.14 小结 第7章 Visual Studio 2010的任务调试能力 7.1 充分利用多显示器的支持 7.2 理解 并行 任务调试器窗口 7.3 查看 Parallel Stacks图 第8章 线程池 第9章 异步编程模型 第10章 并行 测试和调优 第11章 向量化、SIMD指令以及其他 并行 库 附录A .NET 4中与 并行 相关的类图 附录B 并发 UML模型 附录C Parallel Extensions Extras
并发 是逻辑上的同时发生(simultaneous),而 并行 是物理上的同时发生. 并发 性(concurrency),又称共行性,是指能处理多个同时性活动的能力, 并发 事件之间不一定要同一时刻发生。 并行 ( parallel ism)是指同时发生的两个 并发 事件,具有 并发 的含义,而 并发 则不一定 并行 。 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持 并发 也不支持 并行 。 你吃饭吃到一半...
在看g1gc文章的时候,把con current and parallel phases翻译成 并发 并行 阶段,感觉这2个词不是一个意思吗?为啥他原始文档要强调这2个词呢。深究一下,果然不是一个意思。 总体概念: 在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调用机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫 并发 (con current )。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做 并行 (p
两者的 英文 翻译没有多大 区别 ,差不多都是说同是发生,但字面上 Parallel 多了一个平行的意思。所以在计算机领域正常的中文翻译是: Con current (Concurrency) -- 并发 Parallel ( Parallel ism)-- 并行 2、解释: 1)、Erlang 之父 Joe Armstrong 用一张小孩都能看懂的图解释了 并发 与...
并发 (Con current )和 并行 ( parallel ) 并发 并行 区别 是什么? 术语 并发 (Con current )和 并行 ( parallel ) 经常用于与多线程程序相关的情况。但是 并发 并行 到底是什么意思,这两个术语有什么不同呢? 并发 性意味着应用程序同时( 并发 地)处理多个任务。如果计算机只有一个CPU,应用程序可能不会在同一时间处理多个任务,但是在应用程序内一次处理多个任务。在开始下一个任务之前,它不会完全完成一个任务。相反,CPU在不同的任务之间切换,直到任务完成。 即使只有一个线程在其中运行,
并行 parallel )和 并发 (concurrency)是两个不同的概念。 并行 是指多个任务同时都在执行,一般通过多线程、多进程或多台计算机实现。 并发 是指至少两个任务都在推进,不一定是 并行 的,也可以是时间片切分的方式串行。 Windows 3.x时的协作式多任务(cooperative multitasking),是基于 并发 的多任务,一个进程交出执行权后下一个进程才能继续执行。Wind
using System.Collections; using System.Collections.Con current ; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; 1. 线程安全性: - HashMap:HashMap 是非线程安全的,如果多个线程同时访问 HashMap,可能会导致数据不一致或抛出 Con current ModificationException 异常。 - Con current HashMap:Con current HashMap 是线程安全的,它通过使用分段锁(Segment)来实现 并发 访问。不同的 Segment 可以由不同的线程同时访问,提高了 并发 性能。 2. 写操作和读操作: - HashMap:在写操作时,需要加锁来保证线程安全,因此在高 并发 环境下,性能会受到影响。在读操作时,不需要加锁,因此性能较高。 - Con current HashMap:Con current HashMap 使用了分段锁,在写操作时只锁定对应的分段,不影响其他分段的 并发 读操作,因此在高 并发 环境下性能较好。 3. 迭代器: - HashMap:在使用迭代器遍历 HashMap 时,如果期间有其他线程修改了 HashMap,可能会抛出 Con current ModificationException 异常。 - Con current HashMap:Con current HashMap 的迭代器是弱一致性的,它不会抛出 Con current ModificationException 异常。迭代器可以反映出在创建迭代器之前的状态,并且可能会反映出其他线程对 Con current HashMap 进行的最近修改。 综上所述,如果需要在多线程环境中使用 Map,推荐使用 Con current HashMap,它提供了更好的 并发 性能和线程安全性。而在单线程环境下,HashMap 的性能可能会更好一些。 所以新手使用celery很仔细的建立文件夹名字、文件夹层级、python文件名字。 所以网上的celery博客教程虽然很多,但是并不能学会使用,因为要运行起来需要以下6个方面都掌握好,博客文字很难表达清楚或者没有写全面以下6个方面。 celery消费任务不执行或者报错NotRegistered,与很多方面有关系,如果要别人排错,至少要发以下6方面的截图,因为与一下6点关系很大。 1)整个项目目录结构, 2)@task入参 ,3)celery的配置,4)celery的配置 include ,5)cmd命令行启动参数 --queues= 的值,6)用户在启动cmd命令行时候,用户所在的文件夹。 在不规范的文件夹路径下,使用celery难度很高,一般教程都没教。 [项目文件夹目录格式不规范下的celery使用演示](https://github.com/ydf0509/celery_demo) 。 此国产分布式函数调度框架 funboost python万能通用函数加速器 https://funboost.readthedocs.io/ , 从用法调用难度,用户所需代码量,超高并发性能,qps控频精确程度,支持的中间件类型,任务控制方式,稳定程度等19个方面全方位超过celery。发布性能提高1000%,消费性能提高2000% 并发(Concurrent) 与并行(Parallel) 的区别 恋喵大鲤鱼: 找到了一个不错的简写网站:https://www.allacronyms.com/ 并发(Concurrent) 与并行(Parallel) 的区别 Yanbin_Q: 好像没什么可简写了,一般的包名会是 concurrent 或 threading 并发(Concurrent) 与并行(Parallel) 的区别 恋喵大鲤鱼: concurrent 的简写一般可以写成什么? Mockito 也能 Mock final 类和 final 方法了 qq_32675267: 求问怎么解决的