并发和并行的区别

    并发行和并行性的区别可以用馒头做比喻。前者相当于一个人同时吃三个馒头和三个人同时吃一个馒头。(今天听一个学长说的,感觉挺形象的!)

     并发性(Concurrence):指两个或两个以上的事件或活动在同一时间间隔内发生。并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。

     并行性(parallelism)指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。

     区别:一个处理器同时处理多个任务和多个处理器或者是多核的处理器同时处理多个不同的任务。

     前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生。\

     两者的联系:

       并行的事件或活动一定是并发的,但反之并发的事件或活动未必是并行的。并行性是并发性的特例,而并发性是并行性的扩展。

并发并行是计算机领域中相似却有区别的概念,区别主要体现在以下三个方面: - **定义不同**:并发是指两个或多个事件在同一时间间隔发生,把任务在不同的时间点交给处理器进行处理,在同一时间点,任务并不会同时运行;并行是指两个或者多个事件在同一时刻发生,把每一个任务分配给每一个处理器独立完成,在同一时间点,任务一定是同时运行[^1]。 - **侧重点不同**:并发侧重于在同一实体上;并行侧重于在不同实体上[^1]。 - **处理方式不同**:并发在一台处理器上“同时”处理多个任务;并行在多台处理器上同时处理多个任务[^1]。 以餐厅为例,并发就像一个服务员同时服务多桌客人,他在不同时间点为不同桌客人提供服务,同一时间只服务一桌;并行则像多个服务员同时服务不同的客人,每个服务员独立负责一桌,多个服务在同一时刻同时进行。 ```python import threading import time # 并发示例 def task_concurrent(id): print(f"Task {id} started") time.sleep(1) print(f"Task {id} finished") threads = [] for i in range(3): t = threading.Thread(target=task_concurrent, args=(i,)) threads.append(t) t.start() for t in threads: t.join() # 并行示例(使用多进程) import multiprocessing def task_parallel(id): print(f"Task {id} started") time.sleep(1) print(f"Task {id} finished") if __name__ == '__main__': processes = [] for i in range(3): p = multiprocessing.Process(target=task_parallel, args=(i,)) processes.append(p) p.start() for p in processes: p.join() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值