多线程VS多进程
1 什么是多进程?
多进程系统拥有一个或者以上的CPU。这些CPU被添加到系统中提高系统的计算速度。每个CPU都有自己的寄存器和主存储器。
由于每个CPU都是独立的,可能会发生一个CPU无事可做的情况,而另一个CPU可能会因为特定的任务而超负荷运转。在这种情况下,多进程技术就会在CPU之间动态共享资源。
单CPU的情况下执行多进程,需要切换CPU调度
2 什么是多线程?
多线程是一种程序执行技术,它允许一个进程拥有多个代码段, 这些代码段在该进程的"上下文"中并发运行。多线程应用程序是指有两个或多个线程并发运行的应用程序。
3 多进程的基本特征
1. 多进程是根据其内存的组织方式来分类的。
2. 多进程可以提高系统的可靠性
3. 多进程可以通过将程序分解为并行的可执行任务来提高性能。
4 多线程的基本特征
1. 在多线程过程中,每个线程都是相互平行运行的。
2. 线程不允许分割内存区域。因此,它可以节省内存,并提供更好的应用性能。
5 进程和线程的对比
对比参数 |
多进程系统 |
多线程系统 |
基本 |
多进程帮助提高计算能力。 |
多线程帮助单个进程提高计算能力。 |
运行 |
允许同时执行多个进程。 |
一个进程的多个线程是并发执行的。 |
CPU 切换 |
在多进程中,CPU必须在多个程序之间切换,看起来就像多个程序同时运行。 |
在多线程中,CPU必须在多个线程之间进行切换,看起来所有线程都在同时运行。 |
创建 |
进程的创建是缓慢的,因为是消耗资源的。 |
线程的创建相比进程是节约时间和资源的。 |
分类 |
多进程可以是对称的,也可以是非对称的。 |
多线程没有这些分类。 |
内存 |
多进程为每个进程分配单独的内存和资源。 |
属于同一进程的多线程与该进程共享相同的内存和资源。 |
拣选对象 |
多进程依靠拣选内存中的对象来发送给其他进程。 |
多线程避免了拣选。 |
程序 |
多进程系统可以执行多个进程任务。 |
多线程系统执行同一进程的多个线程任务。 |
时间开销 |
减少了作业处理时间。 |
减少了工作处理时间。 |
6 多进程的优势
1. 代码通常是直接的。
2. 充分利用了多个CPU及其内核的优势
3. 帮助你避免CPython的GIL限制。
4. 移除同步基元(除非你使用共享内存)。
5. 子进程大多是可中断/可杀死的。
6. 它可以帮助你在较短的时间内完成工作。
7. 当需要非常高的速度来处理大量数据时,应该使用这类系统。
8. 多处理系统与单处理器系统相比,可以节省资金,因为处理器可以共享外围设备和电力资源。
7 多线程的优势
1. 线程共享同一个地址空间
2. 线程属于轻量级,内存占用少。
3. 线程之间的通信成本很低。
4. 从另一个上下文访问内存状态更容易
5. 它允许你轻松地制作响应式用户界面
6. I/O绑定应用的理想选择
7. 在共享内存内的两个线程之间切换所需时间较少,终止时间较少
8. 线程的启动速度比进程快,任务切换也快。
9. 所有线程共享一个进程内存池。
10. 在现有进程中创建一个新线程比创建一个新进程所需的时间更短。
8 多进程的缺点
1. IPC(Inter-Process Communication)相当复杂,开销较大。
2. 具有较大的内存占用率
9 多线程的缺点
1. 多线程系统是不可中断的
2. 如果不遵循命令队列和消息泵的模式,需要手动进行同步。
3. 代码通常比较难理解,增加了竞赛条件的可能性。
10 关键差异
1. 多进程系统一般在两个以上的处理器时可以提高计算性能,而多线程是一种允许一个进程拥有多个代码段的程序执行技术。
2. 多进程提高了系统的可靠性,而在多线程过程中,每个线程都是相互并行运行的。
3. 多进程可以帮助你提高计算能力,而多线程则可以帮助你创建单个进程的计算线程。
4. 在多进程中,一个进程的创建,是缓慢的,因为需要申请资源,而在多线程中,线程的创建是节约时间和资源的。
5. 多线程避免了pickling,而多处理则是依靠pickling内存中的对象来发送给其他进程。
6. 多进程系统耗时较少,而对于作业处理来说,则需要适量的时间。
- 点赞
- 收藏
- 关注作者
评论(0)