gpt4 book ai didi

python - 为什么 itertools izip 比文档中的等效函数更快?

转载 作者:行者123 更新时间:2023-12-01 04:53:57 24 4
gpt4 key购买 nike

documentation写的是:

def izip(*iterables):
# izip('ABCD', 'xy') --> Ax By
iterators = map(iter, iterables)
while iterators:
yield tuple(map(next, iterators))

但是当我使用 itertools.izip 运行测试时,它的工作速度更快,然后当我从模块运行 izip 函数时。为什么会发生这种情况?我可以快速运行模块功能吗?

计时器测试:

>>> t = Timer("dict(izip_2(keys,values))", "from __main__ import keys, values, izip_2")
>>> t2 = Timer("dict(itertools.izip(keys,values))", "from __main__ import keys, values")
>>>
>>> print min(t.repeat(5, 10000))
31.6810410023
>>> print min(t2.repeat(5, 10000))
2.50448894501

最佳答案

在我的 CPython 中,itertools 是用 C 而不是 Python 编码的:

In [1]: import itertools

In [2]: itertools.__file__
Out[2]: '.../lib/python2.7/lib-dynload/itertools.so'

一般来说,预编译的 C 往往比解释的 Python 更快,所以这很可能是原因之一。

关于python - 为什么 itertools izip 比文档中的等效函数更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27875102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com