Python - 如何利用更多内存

问题描述 投票:0回答:1

我有一个 Panads 代码,运行超过 1 小时才能产生输出。当我最初运行它时,我的电脑有 16GB RAM,任务管理器显示脚本运行时大约 80% 的内存正在被使用。我刚刚将 RAM 升级到 64GB。但是现在当我运行代码时没有任何改进。系统不会使用所有可用内存。右图显示内存使用率约为 30%,CPU 使用率约为 10%。

如何增加内存使用率以加快脚本执行速度

python pandas memory
1个回答
0
投票

理解您如何认为提供更多内存将使数据帧操作运行得更快并不那么容易。如果您的利用率为 80%,那么这似乎并不是一个障碍。

然而,Linux 有 交换空间 ,这可能会合理地减慢计算速度。操作系统可能决定必须开始转储数据,然后从磁盘读回数据。我认为这不是问题所在,但您可以从类似

htop
之类的内容中读取该信息。不过,升级 RAM 并没有改变处理速度这一事实并不表明这就是问题所在。

RAM 是处理速度的潜在“限制”,但其增加并不能直接提高处理速度。怎么可能呢?控制处理速度的是CPU。 您的CPU利用率低,这就是影响速度的原因。这是因为

pandas

中的很多进程都是单线程的。 Python 有

GIL
 这将是一个真正的限制。在编译的扩展中,有很多
方法可以解决这个问题(
pandas,以及它所构建的库,有时会使用),但是很难知道先验
您正在使用的特定操作是否真的做到了这一点.

polars

试图通过多种方式解决这个问题。它对很多操作进行多线程处理(以绕过 GIL,而

pandas
则不然),并且它还具有“惰性求值”功能,它通过仅选择实际需要的数据来实现使用更多 RAM 的相反
您的计算,而不是预先加载全部内容。
如果您设计的代码带有某种病态循环,完全阻碍了库的优化,那么这些信息都不会帮助您,但希望它能为您提供一些如何继续的指示。

© www.soinside.com 2019 - 2024. All rights reserved.