Mat*_*ner 3 python generator python-3.x
在CSP样式进程的异常处理程序中,我需要读取并丢弃通道的全部内容,以便允许阻止发送给它的其他进程完成.接口提供了一个用于接收的发生器,是否有更快的方式来消耗和丢弃发生器的全部内容而不是以下?
for _ in chan:
pass
Run Code Online (Sandbox Code Playgroud)
有一种方法稍快:
collections.deque(chan, maxlen=0)
Run Code Online (Sandbox Code Playgroud)
但是,您的代码会使意图更加清晰,因此您应该衡量是否存在明显差异.我几乎总是喜欢你的代码.
(但我永远不会_用作变量名.它往往会混淆人们,_在交互式shell中与常见的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |