Есть способ, который немного быстрее:
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