在检查了几个简单的测试之后,似乎从循环中断到结束生成器而不是引发StopIteration异常似乎更快.如果停止生成器的标准和可接受的方法正在使用异常,为什么会出现这种情况.资源
In [1]: def f():
....: for i in range(1024):
....: yield None
....: break
....:
In [2]: def g():
....: for i in range(1024):
....: yield None
....: raise StopIteration
....:
In [3]: %timeit for i in f(): pass
1000000 loops, best of 3: 1.22 µs per loop
In [4]: %timeit for i in g(): pass
100000 loops, best of 3: 5.9 µs per loop
In [5]: %timeit for i in f(): pass
1000000 loops, best of 3: …Run Code Online (Sandbox Code Playgroud) 在Python 3文档中,它声明dbm模块将在已安装的情况下使用gdbm。在我的脚本中,我from dbm.gnu import open as dbm_open尝试尝试导入模块。它总是返回带有异常ImportError: No module named '_gdbm'。我已经去了gnu网站并下载了最新版本。我使用
./configure --enable-libgdbm-compat,进行make; make check; make install了安装,并且没有错误安装。我可以访问该库的手册页,但仍然无法将其导入Python 3.5.2(Anaconda)。如何为gdbm安装Python模块?