【发布时间】:2018-09-06 22:36:54
【问题描述】:
python: 2.7
Ubuntu: 18.04
matpltolib: 2.2.2
我有一个客户端 GUI,它从服务器获取信息并显示它。我看到内存泄漏和 CPU 消耗随时间的变化。下图显示了使用 GUI 重新启动客户端后 CPU 和内存利用率的变化(距离右侧约 25 秒,与网络流量中的一个调子对齐)。
CPU 图表的 CPU 使用率有所下降,表明程序重启前后 CPU 使用率不同。
内存图显示内存利用率大幅下降,然后由于同一程序的初始化而略有增加。
网络图出现峰值,因为客户端向服务器请求所有数据以进行可视化。
我怀疑这与 matplotlib 有关。我有 7 个数字,每 3 秒重新绘制一次。
我添加了我的 GUI 图像。中间的 4 个图表是历史图表。但是,我将所有数据点合并到 300 个 bin 中,因为我在该区域有 ~ 300 个像素。分箱在单独的线程中完成。存储信息的数据数组(2x1 000 000 点、时间和值)是从一开始就创建的,以确保我的数据集增长时不会出现任何内存失控问题。我预计数据集不会超过这个范围,因为典型的实验以 0.1-0.01 Hz 的频率运行,这需要几百万秒才能到达终点。
问题:如果是Matplotlib,我该怎么办?如果不是,那还能是什么?
于 2018 年 9 月 6 日添加: 我想添加另一个示例。这是我关闭 GUI 后 CPU 和内存使用情况的屏幕截图。代码运行了约 3 天。 Python 2.7,Ubuntu 18.04.1。
【问题讨论】:
-
泄漏点在哪里?您的使用几乎是恒定的。您确定重启后的差异不是来自重启后无法立即使用的瞬态数据吗?
-
看起来你启动了一个进程,这个进程消耗了 CPU 和内存。这是非常值得期待的。从提供的信息中,无法找出是什么进程以及是否预期内存/cpu 使用量。如果没有进程代码的minimal reproducible example,这个问题似乎也不是 Stackoverflow 的主题。
-
@MisterMiyagi,1) 泄漏速度非常慢,无法在那种规模上看到。
-
当我启动 Firefox 并使用它半天时,也会发生同样的情况。这对于计算机程序来说是很正常的,不是吗?所以我在理解这个问题时确实有严重的问题。
-
这个问题的读者都不知道你的软件(哈勃望远镜软件也不知道)。根据代码的外观,内存使用量可能会增加,也可能不会 - 如果没有访问正在使用的软件,任何人都无法发现。
标签: python-2.7 matplotlib ubuntu-18.04