多线程与多进程的本质

多线程与多进程的本质

多进程和多线程是工程和科研工作中常用的技术手段,在介绍二者之前我们先了解一下并发(concurrency)和并行(parallellism)。
严谨权威的定义网上比较多,我就用个人理解的方式介绍。
并行:父亲和儿子同时度过一天。
并发:我吃完早饭吃午饭,吃完午饭吃晚饭,我度过了一天。

言归正传,来谈多进程与多线程。
“进程是资源分配的最小单位,线程是CPU调度的最小单位”
线程可以算作进程的子集,一个进程可能由多个线程组成,多进程的数据是分开的,共享复杂但同步简单;多线程共享进程数据,共享简单但同步复杂。

多线程的优缺点

多线程的速度提升影响有限,原因是多线程本质上还是在一个进程里做的资源分配优化,还没有利用到多进程,多核心计算的能力。但是多线程的巨大优势是在遇到阻塞型函数,例如 API 调用,网络通信,文件读写的时候,可以不被网络速度,硬盘速度耽误了程序其他部分的运算

多进程的优缺点

多进程 (Multi-Process) 和多线程 (Multi-Thread) 最大的区别是,多进程是在各自单独的进程内存管理下运行代码,而多线程是共享一个进程内存。在各自单独的进程管理下,多进程的明显优势是可以最大的利用计算机多核心的处理能力。但是多进程也有其劣势,比如说在进程之间通信需要 IPC (Inter Process Communication) 工具,而不像多线程那样可以共享内存数据。

  • 多进程是具有并行性,多线程是具有并发性。
  • python的多线程也是只有并发性,因为GIL的存在,python的多线程虽然可以利用多核CPU,但并不能让多个核同时工作

参考资料:
基于Python的并行、并发、多进程、多线程
剖析python多线程对多核cpu的利用
Python 基本功: 13. 多线程运算提速
Python 基本功: 14. 多核并行计算

多进程,多线程—— 编程教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值