【发布时间】:2012-02-17 23:09:31
【问题描述】:
我正在尝试使用 Python 的 itertools 模块来加速三重嵌套 for 循环。下面的测试代码将标准的三重嵌套循环与 itertools 的产品方法和输出进行比较:
嵌套循环时间 = 2.35023 秒
Itertools 循环时间 = 2.67766 秒
我错过了什么吗?
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)
【问题讨论】:
-
“我错过了什么吗?” -- 你似乎缺少的是没有人声称
itertools.product()的想法是加速嵌套 for 循环- -
@Sven Marnach 9.7。 itertools — 为高效循环创建迭代器的函数...docs.python.org/library/itertools.html