优化你的 Python 内存使用

我尝试读取一个 2GB 的日志文件。我使用了列表推导式。结果我的笔记本电脑崩溃了,因为它内存耗尽了。

我吸取了一个教训。列表推导式是“急切”的(eager),它们会一次性加载所有内容。生成器表达式是“惰性”的(lazy),它们会逐个加载项目。

使用海象运算符 (:=)。它可以为你存储一个值,让你在同一行代码中重复使用该值。这可以节省 CPU 时间。不要再重复调用那些开销巨大的函数了。

对于 summaxmin 等函数,不要再用 list() 把生成器包装起来了。这样做是浪费。生成器能保持较低的内存占用。

请注意,生成器是单次使用的。遍历一次后它们就会变空。如果你需要再次使用这些数据,请创建一个新的生成器或将其转换为列表。

为实际的高负载场景编写代码:

  • 对大数据流使用生成器。
  • 使用海象运算符来减轻 CPU 负担。
  • 记住生成器是一次性的。

今天就检查一下你的代码吧。尝试将列表替换为生成器。

来源:https://dev.to/timevolt/list-comprehensions-generators-and-the-walrus-what-most-python-devs-overlook-70g