首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python itertools -慢?

Python itertools -慢?
EN

Stack Overflow用户
提问于 2012-02-18 07:09:32
回答 1查看 3.4K关注 0票数 12

我正在尝试使用Python的itertools模块来加速一个三重嵌套的for循环。下面的测试代码将标准的三重嵌套循环与itertools的product方法和输出进行了比较:

嵌套循环时间= 2.35023秒

Itertools循环时间= 2.67766秒

我是不是遗漏了什么?

代码语言:javascript
复制
import numpy
import itertools
import time

n = 128
a = numpy.arange(n**3).reshape((n,n,n))
b = numpy.zeros((n,n,n))
c = numpy.zeros((n,n,n))

t = time.time()
for i in range(n):
    for j in range(n):
        for k in range(n):
            b[i,j,k] = a[i,j,k]
print 'Nested loop time = %g secs' % (time.time() - t)

t = time.time()
for (i,j,k) in itertools.product(range(n), repeat=3):
    c[i,j,k] = a[i,j,k]
print 'Itertools loop time = %g secs' % (time.time() - t)
EN

回答 1

Stack Overflow用户

发布于 2012-02-18 07:16:15

第二个循环似乎确实比第一个循环慢,这可能是因为元组解包。你不需要这样做,我发现这样做会让第二个循环更快:

代码语言:javascript
复制
for ijk in itertools.product(range(n), repeat=3):
    c[ijk] = a[ijk]

当然,使用numpy时,您希望完全避免遍历元素,而是一次在整个数组上使用numpy操作。这样,所有的循环,等等,都是用C语言完成的,你会得到巨大的加速。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9336727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档