python和c++的区别


python和c++的区别

Python是一种基于解释器的语言,解释器会逐行读取代码;首先将Python编译为字节码,然后由大型C程序解释
解释型语言没有转二进制文件的过程,而是什么时候需要,什么时候编译。c++编译型语言生成二进制.exe文件后,那这个二进制文件就可以直接执行,而python解释型语言需要随时带着这个解释器,必须随叫随到

编译型语言 c++
运行速度 (二进制文件)
可移植性(跨平台)(CPU指令系统变则执行出错)
更新 需要重新编译
安全 性 (无需提供源码)
内存管理 需要自己回收资源,存在内存泄漏的风险
多线程效率


编译型语言 python
运行速度 慢(边解释边执行)
可移植性 好(随身带着解释器)
更新 仅解释更新的内容
安全 性 连同源码一起交付
内存管理 Python使用自动垃圾收集器进行内存管理
多线程效率 CPython解释器 有GIL全局解释器锁,多线程运行速度较慢

CPython GIL全局解释器锁:

解释器被一个全局解释器锁保护着,它确保任何时候都只有一个CPython线程执行。 GIL最大的问题就是CPython的多线程程序并不能利用多核CPU的优势,会影响到那些严重依赖CPU的程序, 如果你的程序大部分只会涉及到I/O,比如网络交互,那么使用多线程就很合适, 因为它们CPU的大部分时间都在等待。实际上,你完全可以放心的创建几千个CPython线程

由于Python是解释执行的,如果你将那些性能瓶颈代码移到一个C语言扩展模块中, 速度也会提升的很快。如果你要操作数组,那么使用NumPy这样的扩展会非常的高效。 最后,你还可以考虑下其他可选实现方案,比如PyPy,它通过一个JIT编译器来优化执行效率

可以用进程替换线程


Python解释器

解释器其实包括编译过程,只是这个编译过程没有生成目标代码。Python解释器由编译器虚拟机构成,编译器将源代码转换成字节码,然后再通过Python虚拟机来逐行执行这些字节码。

python程序执行过程:

1、执行 .py 文件,就会启动python解释器

2、编译器将源文件解释成字节码
3、虚拟机将字节码转化成机器语言,与操作系统交互

4、程序运行结束后,将字节码存到pyc文件,便于后续直接执行

python解释器有很多种:

CPython:C语言开发,使用最广,默认的解释器
IPython:基于CPython之上的交互式解释器
PyPy:采用JIT技术,对python代码进行动态编译,追求执行速度
Jython:运行在Java平台上的解释器,可以直接编译成Java字节码执行
IronPython:同理Jython,运行在 .Net 平台上

虽说有那么多种解释器,但是我们常用的还是CPython,

CPython:

CPython 使用基于堆栈的虚拟机。也就是说,它完全围绕堆栈数据结构(你可以将项目“推”到结构的“顶部”,或者将项目“弹出”到“顶部”)。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值