Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么itertools izip比文档中的等效函数更快?_Python_Itertools_Built In - Fatal编程技术网

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

Python 为什么itertools izip比文档中的等效函数更快?,python,itertools,built-in,Python,Itertools,Built In,报告中写道: def izip(*iterables): # izip('ABCD', 'xy') --> Ax By iterators = map(iter, iterables) while iterators: yield tuple(map(next, iterators)) 但当我使用itertools.izip运行测试时,它运行得更快,然后从模块运行izip函数。为什么会这样?我可以以同样快的速度运行模块功能吗 计时器测试: >

报告中写道:

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快,所以这很可能是一个原因