串行编程 vs 并行编程

串行编程 vs 并行编程
串行编程 vs 并行编程通俗 原理对比一、核心定义1. 串行编程Serial任务排队依次执行同一时刻 CPU 只做一件事前一个任务结束下一个才开始。 公式总耗时 所有任务耗时累加特点单线程顺序执行代码逻辑简单、好调试多核 CPU 只能用上 1 个核心资源浪费适合逻辑依赖强、任务必须先后执行的场景示例烧水→洗菜→煮饭一步做完才下一步。2. 并行编程Parallel多个任务同一时刻同时运行占用多个 CPU 核心任务并发推进。 理想总耗时 ≈ 耗时最长的单个任务细分两个概念真正并行多核 CPU多个线程跑在不同物理核心同一瞬间同时运算并发伪并行单核 CPU操作系统快速切换线程肉眼看起来同时跑微观仍是串行特点充分利用多核、多机器算力大幅提速存在资源竞争、锁、同步、死锁等问题编码复杂适合无依赖、可拆分的计算批量数据处理、图像渲染、大数据运算二、关键区别对照表对比项串行编程并行编程执行方式顺序逐个执行多任务同时执行CPU 利用单核运行其余空闲多核同时占用运行耗时任务耗时总和约等于最慢任务耗时开发难度简单无同步问题复杂锁、竞态、死锁、数据安全适用场景业务流程强依赖、IO 串行海量循环计算、数据分片、多任务独立三、代码极简举例伪代码a 计算1() b 计算2() c 计算3() // 必须1做完→2→3并行开启线程1计算1() 开启线程2计算2() 开启线程3计算3() // 三个函数同时运行四、常见并行技术单机多核并行PythonmultiprocessingJavaThread / 线程池COpenMP、pthread分布式并行多台机器Spark、MapReduce任务拆分到多台服务器并行计算五、什么时候选哪种选串行任务有先后依赖先查库再计算再入库、逻辑简单、IO 阻塞为主选并行大规模循环运算、数据无依赖、CPU 密集型计算