有一种方法稍微快一点:
collections.deque(chan, maxlen=0)
但是,您的代码使意图更加清晰,因此您应该衡量是否存在明显的差异。我几乎总是喜欢您的代码。
(不过,我永远不会将其_
用作变量名。它_
会使人感到困惑,在交互式外壳程序中与通用gettext
别名发生冲突。)
:这是一些简单的时间:
In [1]: import collections
In [2]: a = range(100000)
In [3]: timeit reduce(lambda _, __: None, a)
100 loops, best of 3: 13.5 ms per loop
In [4]: timeit for dummy in a: pass
1000 loops, best of 3: 1.75 ms per loop
In [5]: timeit collections.deque(a, maxlen=0)
1000 loops, best of 3: 1.51 ms per loop