首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CPython 3.11 来了

当使用 pyperformance 基准套件测量在 Ubuntu Linux 上使用 GCC 编译时, CPython 3.11 平均比 CPython 3.10 快 25% 。...此外还需关注 C 扩展的问题:CPython 与 C 的简单接口是主要优势,而与 C 扩展的不兼容性则是一大槽点。...而 Faster CPython 团队在 CPython 3.11 中所做的优化工作在很大程度上忽略了扩展模块的问题,对此,团队领导者 Shannon 表示,团队正在开辟将低级函数 API 暴露给虚拟机的可能性...(顺便说一下,Shannon 一直对 CPython 是否真的需要引入 JIT 持怀疑态度。)...这个提案和 Faster CPython 团队的工作将以截然不同的方式加速多线程 Python 代码,但两者又可能产生一些冲突,毕竟 Faster CPython 已实施的优化,很大一部分都基于 GIL

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

CPython源码阅读笔记(2)

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

1.5K30

想学CPython,Python之父Guido亲上阵

就在刚刚(2020年2月10日),Python之父Guido van Rossum在其个人Blog中发布了他对CPython学习的帮助教程。下面让我们一睹为快吧! ? 1 你需要了解的!...2 入门文档 ▌核心教程,先从这里开始: ▌https://cpython-core-tutorial.readthedocs.io/en/latest/ ?...4 Workflow ▌Git设置 1、如果你还没有GitHub账号,请登录GitHub.com 2、在GitHub上调用Python/CPython repo,点击Fork按钮(右上角): ?...3、在本地克隆你的fork: `git clone git@github.com:YOURUSERNAME/cpython.git` `cd cpython` 4、配置upstream remote,现在你可以用...“git push”和“git pull”来push/pull你的fork: git remote add upstream https://github.com/python/cpython/ 5、创建一个分支工作

74610

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 倍。

1.1K10

包装

1.什么是包装类 把基本数据类型包装成一个对象,以面向对象的思想来使用这些类型 基本数据类型 对应的包装类 byte Byte short Short int Integer long Long float...Float double Double Char Character boolean Boolean 用包装类比起基本类型它是以类创建对象的形式,所以它有更多的功能性有很多方法可用 2.装箱操作...装箱就是把基本数据类型转为包装类,以整型为例 int a = 5; Integer b = new Integer(a);//这是第一种方法 Integer c=Integer.valueOf(a);...(5) int b = a;//实际上是=a.intValueOf() 5.String与基本类型,包装类型的相互转换 String转包 Integer a = new Integer("123");...Double b = new Double("12.3"); 包装转String Integer a = 5; String b = a.toString(); String转基本数据类型 String

44850

Python源码剖析:深度探索Cpython对象-达观数据

CPython 是 Python 社区的标准,其他版本的 Python,比如 pypy,都会遵行 CPython 的标准 API 实现。...想要更深入的认识 Python,就需要了解 CPython 的源码实现。本文将从 CPython 的对象构造器开始入手,带大家揭开 CPython 源码的面纱,带你进入 C + Python 的世界。...二、CPython 整体架构CPython 整体架构大致分为三个模块:代码文件 File Groups - Python 所提供的的大量的模块、库、以及用户自定义的模块。...本文从 CPython 对象构造器入手,介绍了浮点数对象在 CPython 底层数据结构中的表现形式以及对象创建的过程。...通过进一步了解 CPython 动态性的实现方式,读者可望在阅读 CPython 源码后提升编写高质量代码的能力。

22010

包装类应用

包装包装类与基本数据类型 装箱与拆箱 装箱 装箱:把基本数据类型转换成包装类 自动装箱 int a1=10; Integer a2=a1; 手动装箱 Integer a3=new Integer...a5=a2.intValue(); 测试结果 Integer类型对象a4=10 自动拆箱后:int类型a4=10 手动拆箱后:int类型a5=10 基本数据类型与包装类的比较 在包装类与基本数据类型的使用...初始值:基本数据类型有各自默认初始值,包装类的对象未初始化时。...); 测试 int类型转换为String类型对象t2=2 字符串转换为基本数据类型 通过包装类prase int t3=Integer.parseInt(t2); 通过包装类valueOf,先将字符串转换为包装类...,因此每一种数据类型都有对应的包装类 可以通过装箱和拆箱的操作来实现包装类与基本数据类型的转换,同时也可以借由包装类来完成基本数据类型和字符串的转换

42840

Python包装授权

1、什么是包装 # -*- coding : utf-8 -*- """     包装类,就是给被包装的类加个壳;被包装内实现壳的内部,而包装内提供壳的外部(接口),有点类似于继承关系,     ...不过也不完全时,因为通过继承也可以实现包装效果,不使用继承同样可以实现包装效果。...下面通过一个例子来展示     包装的概念 """ class PackageList(object):     "包装List类型,使用非继承实现"     def __init__(self):... 'w'))     file.writelines(["test1\n", "test2\n"])     file.flush()     file.close()     3、总结:     包装和授权往往使用在定制某种类...,其实现的多样性,只要你能想的到,就可以出现千变万化的授权、包装实现方式,上述仅仅提供参考。

69010

Java 为什么需要包装类,如何使用包装类?

但是基本类型如 int 不是引用类型,也不是继承自 Object,所以 Java 需要一个这样的包装类来使其面向对象的完整性。 包装类同时也可以实现可空类型,即一个数值是空的。...Java 集合中也只能放入包装类型,而不支持基本类型。 包装类与自动装箱拆箱 装箱就是 Java 将基本类型转换成对应的包装类型,比如将 int 转换成 Integer 对象。...等价于下面的代码: Integer sum = new Integer(sum.intValue() + i;); 包装类的比较 ==符号是进行引用的比较。这个比较不会引起自动拆箱。...总结 包装类是一个对象,基本类型不是。 包装类和基本类型可以互相转换,转换的过程称之为装箱拆箱,可以手动转换,也可自动转换。...包装类比较大小的时候有很多坑,比如: ==比较引用,Integer 类型只有在-128 到 127 的范围内,才会持有同一个引用。

6.3K50
领券