展开

关键词

CPython源码阅读笔记(1)

准备调试环境目前 CPython 的开发已经迁移到了 Github 上,可以直接去 Github clone 对应的分支。 Exploring CPython’s Internals 一节列出了 CPython 的目录结构, 以及推荐了几篇很有参考价值的文章。 Internals of CPython (这篇比较长,写的比较仔细)Yet another guided tour of CPython (这篇的作者是 Guido)可以参考 devguide 的 compiler handler * int b_level; * value stack level to pop to *} PyTryBlock;PyEval_EvalFrameExPyEval_EvalFrameEx 是 CPython

1.8K10

CPython源码阅读笔记(2)

PyObjectCPython 中基本的数据结构是 Object,所有的 Python 对象都可以用 PyObject * 来访问,CPython 中通过 Object 手动实现了对象系统。 CPython 中的对象都需要通过特定的函数来创建,所有对象都需要申请内存来创建在堆中,不允许创建在栈上或者创建为全局变量(例如直接声明 PyIntObject i),因为需要统一使用引用计数来管理内存 Added in version 2.6 * unsigned int tp_version_tag; } PyTypeObject;PyIntObjectPyIntObject 为 CPython 中存储普通整数的对象 PyObject *) v;}PyInt_FromLong 中可以看到, 定义了名为 small_ints 的全局数组,用于存储大于-5小于257的小整数,这些对象在解释器初始化后便申请完成,并且在 CPython +--+--+ | ^ | | | ^ +----------------+ +----------------- +---------------+PyIntObject 的运算上一篇中我们了解了 CPython

43730
  • 广告
    关闭

    最壕十一月,敢写就有奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python, CPython, Pypy, Jython的简单介绍

    Python最新的语言特性都是在这个上面先实现,Linux,OS X等自带的也是这个版本,包括Anaconda里面用的也是CPythonCPython是官方版本加上对于CPython API的全面支持,基本包含了所有第三方库支持,例如Numpy,Scipy等。 但是CPython有几个缺陷,一是全局锁使Python在多线程效能上表现不佳,二是CPython无法支持JIT(即时编译),导致其执行速度不及Java和Javascipt等语言。于是出现了Pypy。 针对CPython的缺点进行了各方面的改良,性能得到很大的提升。最重要的一点就是Pypy集成了JIT。 以上只是简单介绍了Python,CPython,Pypy,Jython的关系,算是抛砖引玉了。

    99800

    5倍提升,加速CPython!Quant如何看?

    今天既有正经推文,也有量化八卦~去年11月,Python 之父Guido van Rossum宣布了他已经加入微软的消息:在微软的日子里,他获得了选择项目的自由,并决定让CPython变得更快。 Guido van Rossum、Mark Shannon(加速计划的提出者,精通 Python 性能研究)、Eric Snow(Python 核心开发者之一、微软高级工程师)等多人组成的小团队来加速CPython 加速CPython!在今年2021 Python语言峰会上,Guido Van Rossum在表示:他打算在2022年10月发布3.11版本时将快CPython的速度提高1倍。 在接下来的四年里,他的目标是将CPython的速度提高到原来的5倍。相关阅读最新! 想学CPython,Python之父Guido亲上阵整个计划被称为“香农计划”(即“Shannon Plan”,得名于提出者),期望花 4 年时间把 Python 提速 5 倍,即每年 1.5 倍。

    16110

    基于 CPython 解释器,为你深度解

    前言本次分析基于 CPython 解释器,python3.x版本在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数。

    26410

    想学CPython,Python之父Guido亲上阵

    就在刚刚(2020年2月10日),Python之父Guido van Rossum在其个人Blog中发布了他对CPython学习的帮助教程。下面让我们一睹为快吧!?1你需要了解的! 3、在本地克隆你的fork:`git clone git@github.com:YOURUSERNAMEcpython.git``cd cpython`4、配置upstream remote,现在你可以用

    31510

    关于CPython中set集合的无序研究

    set集合本身是无序的,但是无意间发现set集合中都是数字时set貌似有序了。

    17520

    【Python面试】 说说Python解释器种类以及特点?

    Python解释器主要有以下几个:1、CPython官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。 CPython是使用最广且被的Python解释器。 2、IPythonIPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。 如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。 在这些Python解释器中,使用广泛的是CPython

    34840

    Python常用编译器原理及特点解析

    事实上,确实存在多种Python解释器,比如:CPython当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。 这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。 IPythonIPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。 CPython用 作为提示符,而IPython用In :作为提示符。PyPyPyPy是另一个Python解释器,它的目标是执行速度。 以上的你都见过吧:虽然Python的解释器很多,但使用最广泛的还是CPython

    29251

    零基础python教程-Python解释器是什么?

    CPython当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。 在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。 IPythonIPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。 CPython用>>>作为提示符,而IPython用In :作为提示符。PyPyPyPy是另一个Python解释器,它的目标是执行速度。 绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。

    25410

    Python的优缺点、以及解释器种类

    解释器种类  CPython  当我们从Python官方网站下载并安装好Python 3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。 在命令行下运行python就是启动CPython解释器。  CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。   IPython  IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。 如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。   小结  Python的解释器很多,但使用最广泛的还是CPython

    22420

    【Python面试】 说说Python解释器种类以及特点?

    Python解释器主要有以下几个:1、CPython官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。 CPython是使用最广且被的Python解释器。 2、IPythonIPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。 如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。 在这些Python解释器中,使用广泛的是CPython 。如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

    11440

    Python进阶——为什么GIL让多线程变得如此鸡肋?

    查阅官方文档,GIL 全称 Global Interpreter Lock,即全局解释器锁,它的官方解释如下:In CPython, the global interpreter lock, or GIL 这把锁的存在主要是因为 CPython 解释器的内存管理不是线程安全的。然而直到今天 GIL 依旧存在,现在的很多功能已经习惯于依赖它作为执行的保证。 我们从这个定义中,可以看到几个重点:GIL 是存在于 CPython 解释器中的,属于解释器层级,而并非属于 Python 的语言特性。 ,GIL 是存在于 CPython 解释器中的,我们平时说到 GIL 就认为它是 Python 语言的问题,其实这个表述是不准确的。 其实除了 CPython 解释器,常见的 Python 解释器还有如下几种:CPython:C 语言开发的解释器,官方默认使用,目前使用也最为广泛,存在 GILIPython:基于 CPython 开发的交互式解释器

    12240

    在Linux上安装python

    PATH=”homepython.pyenvbin:$PATH” eval “$(pyenv init -)” eval “$(pyenv virtualenv-init -)”1.Python的编译器CPython 当我们从Python官方网站下载并安装好Python 3.5后,我们就直接获得了一个官方版本的解释器:CPython。 这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。 CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。 2.Python的编译器IPython IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的

    31340

    各种 Python 实现的简单介绍与比较

    当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪些语言要素,应当能完成什么样的任务。 通常提到“Python”一词,都是指CPythonCPython由C编写,将Python源码编译成CPython字节码,由虚拟机解释执行。没有用到JIT等技术,垃圾回收方面采用的是引用计数。 所以当有人问道Python是解释执行还是编译执行,可以这样回答:Python(CPython)将Python源码编译成CPython字节码,再由虚拟机解释执行这些字节码。 对于想在JVM上使用Python简化工作流程,或者出于某些原因需要在Python语言中使用Java的相关代码,同时无需用到太多CPython扩展的用户来说,极力推荐Jython。 想对于CPython,PyPy的性能提升非常明显,但对第三方模块的支持真心是弱爆了。比如无法很好的支持使用CPython的C API编写的扩展,完全不支持使用SWIG、SIP等工具编写的扩展。

    17100

    各种 Python 实现的简单介绍与比较

    来源:Python开发者ID:PythonCoder当谈到Python时,一般指的是CPython。 通常提到“Python”一词,都是指CPythonCPython由C编写,将Python源码编译成CPython字节码,由虚拟机解释执行。没有用到JIT等技术,垃圾回收方面采用的是引用计数。 所以当有人问道Python是解释执行还是编译执行,可以这样回答:Python(CPython)将Python源码编译成CPython字节码,再由虚拟机解释执行这些字节码。 对于想在JVM上使用Python简化工作流程,或者出于某些原因需要在Python语言中使用Java的相关代码,同时无需用到太多CPython扩展的用户来说,极力推荐Jython。 想对于CPython,PyPy的性能提升非常明显,但对第三方模块的支持真心是弱爆了。比如无法很好的支持使用CPython的C API编写的扩展,完全不支持使用SWIG、SIP等工具编写的扩展。

    22050

    Python有哪些实现方式你知道吗?

    源 Python开发者 & 顶级程序员当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪些语言要素,应当能完成什么样的任务。 通常提到“Python”一词,都是指CPythonCPython由C编写,将Python源码编译成CPython字节码,由虚拟机解释执行。没有用到JIT等技术,垃圾回收方面采用的是引用计数。 所以当有人问道Python是解释执行还是编译执行,可以这样回答:Python(CPython)将Python源码编译成CPython字节码,再由虚拟机解释执行这些字节码。 对于想在JVM上使用Python简化工作流程,或者出于某些原因需要在Python语言中使用Java的相关代码,同时无需用到太多CPython扩展的用户来说,极力推荐Jython。 想对于CPython,PyPy的性能提升非常明显,但对第三方模块的支持真心是弱爆了。比如无法很好的支持使用CPython的C API编写的扩展,完全不支持使用SWIG、SIP等工具编写的扩展。

    21320

    Python之父:明年让Python快2倍

    在接受英国技术新闻网站The Register的采访时,对于“为什么开始关注CPython性能?” 并且,Shannon之前参与的HotPy项目中所开发的解释器,比目前CPython解释器的纯Python代码快三倍。这证明了对CPython优化的可行性。 而现在加速的过程中,像是CPython的工具、调试器、配置文件,NumPy包,以及Cython这样的编译器,又会有多少涉及到CPython内部和底层的行为? 因此Shannon表示:要改变是困难的……与CPython用户间的隐形协议并没有很好地定义什么能改,什么不能改。 ”计划简介:https:github.commarkshannonfaster-cpython— 完 —

    13760

    Python的几种实现

    这些实现虽然实现的是同一种语言,但是彼此之间,特别是与CPython之间还是有些差别的。下面分别列出几个主要的实现。1. CPython:这是Python的官方版本,使用C语言实现,使用最为广泛,新的语言特性一般也最先出现在这里。   CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。2. Jython:这是Python的Java实现,相比于CPython,它与Java语言之间的互操作性要远远高于CPython和C语言之间的互操作性。   Python for .NET:它实质上是CPython实现的.NET托管版本,它与.NET库和程序代码有很好的互操作性。4.

    17920

    Python解释器类别和选择

    CPythonPython的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 IPythonIPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。 CPython用 >>> 作为提示符,而IPython用 In :作为提示符。 ?JyhtonPython的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。 绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。 如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。IronPythonPython的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。

    16220

    相关产品

    • 云服务器

      云服务器

      腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券