python - 发电机的效率

标签 python performance generator

我正在编写一些软件来创建复杂波形(实际上是声波)作为数组。从一些原始波形(正弦波等)开始,将会有将它们组合起来以创建更复杂波的函数,以及更多将这些波组合起来的函数等。

它可能看起来像:

f(mult(sine(), env(square(), ramp()))

但要复杂得多。

这样做的一种方法是让每个函数成为一个生成器,这样整个函数树对每个元素执行一次,每个生成器每次都产生一个值。

数组可能有几百万个元素,函数树很容易就有 10 层深。发电机这样做会不会效率低得离谱?

另一种方法是让每个函数创建并返回一个完整的数组。这可能会更有效,但也有缺点(实现更困惑,计算结束前没有可用的结果,可能会占用大量内存)。

他们总是说你不应该尝试猜测 Python 的效率,但在这种情况下生成器会花费很长时间吗?

最佳答案

生成器是惰性序列。当您的序列可能很长时,只要您可以分段操作(按元素或在合理大小的 block 上),它们就非常适合使用。

这往往会减少您的内存使用峰值。只是不要通过将序列的所有元素存储在某处来破坏它。

关于python - 发电机的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31762188/

相关文章:

python - 为什么即使数据库中没有对象,django paginator.num_pages 也会返回一个?

python - 简单的正则表达式困惑

python - 在有条件的keras中实现自定义损失函数

javascript - RTCPeerConnection 的高 CPU 使用率

algorithm - 找到第n个比较

haskell - 在 haskell 中根据用户定义的数据类型创建生成器

python - Matplotlib 循环中的图形没有响应

performance - PostgreSQL(开发机器)的最佳配置选项

python - 是否有无限迭代器的表达式?

javascript - regeneratorRuntime 未定义,我可以用 Gulp 解决这个问题吗?