Tag: cpython

OrderedDict理解

我可以在python扩展语法为其他字典的词典的理解,如collections的OrderedDict模块或从dictinheritance我自己的types? 只要重新绑定dict名称显然不起作用, {key: value}理解语法仍然给你一个普通的理解和文字老字典。 >>> from collections import OrderedDict >>> olddict, dict = dict, OrderedDict >>> {i: i*i for i in range(3)}.__class__ <type 'dict'> 所以,如果可能的话,我该怎么做呢? 没关系,只能在CPython中使用。 对于语法,我想我会尝试用一个O{k: v}前缀,就像我们在r'various' u'string' b'objects' 。 注意:当然,我们可以用一个生成器expression式来代替,但是我更感兴趣的是用语法来看待可用的python。

为什么string的开始慢于?

令人惊讶的是,我发现启动比in : In [10]: s="ABCD"*10 In [11]: %timeit s.startswith("XYZ") 1000000 loops, best of 3: 307 ns per loop In [12]: %timeit "XYZ" in s 10000000 loops, best of 3: 81.7 ns per loop 众所周知, in操作中需要search整个string,并且只需要检查前几个字符,因此startswith应该更有效率。 当s足够大时,启动速度更快: In [13]: s="ABCD"*200 In [14]: %timeit s.startswith("XYZ") 1000000 loops, best of 3: 306 ns per loop In [15]: %timeit […]

variables分配比一个class轮更快

我遇到了这个奇怪的行为,但没有解释。 这些是基准: py -3 -m timeit "tuple(range(2000)) == tuple(range(2000))" 10000 loops, best of 3: 97.7 usec per loop py -3 -m timeit "a = tuple(range(2000)); b = tuple(range(2000)); a==b" 10000 loops, best of 3: 70.7 usec per loop 与variables赋值相比,如何比使用临时variables的单线程快27%以上? 通过Python文档,垃圾收集在timeit期间被禁用,所以不能这样做。 这是一种优化? 结果也可能在Python 2.x中被重现,尽pipe程度较低。 运行Windows 7,CPython 3.5.1,Intel i7 3.40 GHz,64位操作系统和Python。 看起来像一个不同的机器,我已经尝试运行在英特尔i7 3.60 GHz与Python 3.5.0不会重现结果。 使用timeit.timeit() @ […]

IronPython与Python .NET

我想从Python代码中访问一些用C#编写的.NET程序集。 有一点研究表明我有两个select: 具有.NET接口function/支持内置的IronPython Python与Python .NET包 两种解决scheme之间的折衷是什么?

list()使用比列表理解更多的内存

所以我在玩list对象,发现了一些奇怪的事情,如果使用list()创buildlist()它比列表理解使用更多的内存? 我正在使用Python 3.5.2 In [1]: import sys In [2]: a = list(range(100)) In [3]: sys.getsizeof(a) Out[3]: 1008 In [4]: b = [i for i in range(100)] In [5]: sys.getsizeof(b) Out[5]: 912 In [6]: type(a) == type(b) Out[6]: True In [7]: a == b Out[7]: True In [8]: sys.getsizeof(list(b)) Out[8]: 1008 从文档 : 列表可能以几种方式构build: 用一对方括号表示空列表: [] […]

为什么tuple(set())== tuple(set())85%的时间哈希随机化启用?

给零比雷埃夫斯的另一个问题的答案 ,我们有这个 x = tuple(set([1, "a", "b", "c", "z", "f"])) y = tuple(set(["a", "b", "c", "z", "f", 1])) print(x == y) 大约85%的时间打印True 哈希随机化启用。 为什么85%?

为什么迭代一个小string比一个小列表慢?

我正在玩timeit,注意到对一个小string做一个简单的列表理解要比在一个小单string列表上做同样的操作花费的时间要长。 任何解释? 这几乎是时间的1.35倍。 >>> from timeit import timeit >>> timeit("[x for x in 'abc']") 2.0691067844831528 >>> timeit("[x for x in ['a', 'b', 'c']]") 1.5286479570345861 什么发生在一个较低的水平,这是由此造成的?

为什么PyPy的速度提高了6.3倍,我不应该在Python上使用Pyython呢?

我已经听说了许多关于PyPy项目。 他们声称它比他们网站上的CPython解释器快6.3倍。 每当我们谈论像Python这样的dynamic语言时,速度就是最重要的问题之一。 为了解决这个问题,他们说PyPy比以前快了6.3倍。 第二个问题是并行,臭名昭着的全球口译员锁 (GIL)。 为此,PyPy说它可以给GIL更less的Python 。 如果PyPy能够解决这些巨大的挑战,那么它的弱点是什么阻止了更广泛的采用? 也就是说,什么阻止像我这样的典型的Python开发人员现在切换到PyPy?

Python与Cpython

有什么关于Python和CPython (Jython,IronPython)的大惊小怪,我不明白: python.org提到CPython是: Python的“传统”实现(绰号CPython) 另一个堆栈溢出问题提到: CPython是Python的默认字节码解释器,用C语言编写 老实说,我不明白这两个解释实际上是什么意思,但我认为是, 如果我使用CPython这是否意味着当我运行一个示例Python代码,它编译到C语言,然后执行它,就像它是C码 那么CPython究竟是什么,它与Python相比有什么不同,我应该使用CPython而不是Python吗?如果有的话,它有什么优势?

从Python打印到标准打印机?

是否有合理的标准和跨平台的方式来打印文本(甚至是PS / PDF)到系统定义的打印机? 假设CPython在这里,不像使用Jython和Java打印API那样聪明。