Python matplotlib:指定图形大小时未释放内存

2024-04-03

我正在使用 matplotlib 生成许多数值模拟结果图。这些图用作视频中的帧,因此我通过重复调用与此类似的函数来生成其中的许多图:

from pylab import *

def plot_density(filename,i,t,psi_Na):  
    figure(figsize=(8,6))
    imshow(abs(psi_Na)**2,origin = 'lower')
    savefig(filename + '_%04d.png'%i)
    clf()

问题在于,每次调用此函数时,python 进程的内存使用量都会增加几兆字节。例如,如果我用这个循环调用它:

if __name__ == "__main__":
    x = linspace(-6e-6,6e-6,128,endpoint=False)
    y = linspace(-6e-6,6e-6,128,endpoint=False)
    X,Y = meshgrid(x,y)
    k = 1000000
    omega = 200
    times = linspace(0,100e-3,100,endpoint=False)
    for i,t in enumerate(times):
        psi_Na = sin(k*X-omega*t)
        plot_density('wavefunction',i,t,psi_Na)
        print i

然后内存使用量会随着时间增加到 600MB。但是如果我注释掉该行figure(figsize=(8,6))在函数定义中,RAM 使用量稳定在 52MB。(8,6)是默认的图形大小,因此两种情况都会生成相同的图像。我想在不耗尽内存的情况下根据我的数值数据制作不同大小的图。我如何强制 python 释放这些内存?

我试过了gc.collect()每个循环强制垃圾收集,我已经尝试过f = gcf()获取当前数字,然后del f想要删除它,但没有效果。

我在 64 位 Ubuntu 10.04 上运行 CPython 2.6.5。


来自文档字符串pylab.figure:

In [313]: pylab.figure?

如果您要创建许多人物,请制作 确保您明确调用“关闭” 您没有使用的数字,因为 这将使 pylab 能够正确地 清理内存。

所以也许可以尝试:

pylab.close()     # closes the current figure
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python matplotlib:指定图形大小时未释放内存 的相关文章

随机推荐

  • Java - dist 和deploy 文件夹之间的区别

    请原谅我提出一个新手问题 但是 dist 和 deploy 文件夹有什么区别 看起来像是同一件事 都包含文件的 jar 但是 当您清理并构建项目时 看起来只有 dist 文件夹被更新 部署文件夹如何更新 Thanks 我假设您使用的目录布局
  • toString 在 IE 中不起作用

    我在 javascript 中有一个类定义了 toString 方法 但是当我想在页面中打印它时 它总是打印 object object 在 IE 6 8 中 但它可以在 firefox 或 chrome 中工作 在下面的示例中它们都打印
  • 将数据从 Activity 发送到选项卡片段

    我的代码有一个小问题 我在这个网站上搜索但仍然没有找到最佳答案 我将把数据发送到我的选项卡片段 这是我的代码 我的活动课 public class MainActivity extends AppCompatActivity private
  • WCF 能否保持网络上的引用相等?

    假设您有几个类定义为 DataContract public class Foo DataMember public List
  • 向 UIStackView 添加点击手势

    我正在尝试添加一个UITapGesture to a UIStackView在 CollectionView 单元格中 但每次我执行应用程序都会崩溃 全部IBOutlets已连接 我在这里做错了什么 let fGuesture UITapG
  • 每5秒刷新一次表数据

    我目前正处于设计阶段 想知道如何每 5 秒更新一个表 我的表将显示从我的模型返回的只读数据 通常我的观点就是 table table HTML 然后是 foreach 循环来写出数据 然而 因为我想每 5 秒刷新一次整个表 所以我不确定如何
  • win32/C 线程生产者/消费者的阻塞队列

    我正在尝试用自定义队列替换一些线程通信 生产者当前正在使用 PostThreadMessage 消费者正在使用WaitForSingleObject PeekMessage http www justsoftwaresolutions co
  • 在 Windows 7 上配置 GitBash:ssh 失败,我正在尝试一切,快疯了

    我只是想通过 ssh 连接到 github 简直要疯了 我用的是Windows 7 老实说 穆加特罗伊德我一整天都在谷歌和论坛上浏览这件事 但没有突破 在我最近的尝试中 我将配置文件放在 C Users myname ssh 中 结果离幸福
  • Hyperledger Fabric Java SDK 使用 GRPCS 进行对等方和排序者连接

    我有一个 Spring Boot 项目 使用 Fabric java sdk 指向我在本地建立的 BYFN 网络 BYFN 网络没有 CA 容器 我正在尝试使用 grpcs 连接到对等点和排序者 因为我的本地 BYFN 网络上启用了 tls
  • 有没有办法让 cloudformation 查询可用区域以创建子网?

    我有一个 cloudformation 脚本 它尝试创建一个 VPC 每个可用区有一个子网 当我跑步时 aws ec2 describe availablity zones 我得到 4 个区域的返回 AvailabilityZones St
  • 网络音频合成:如何处理在启动或释放阶段更改滤波器截止值?

    我正在使用 WebAudio 构建 Roland Juno 106 合成器的仿真 实时 WIP 版本在这里 http stevegoldberg neocities org juno 如果截止频率或包络调制量在攻击或释放期间发生变化 而滤波
  • 张量流需要GPU吗

    我尝试按照以下说明在 Linux Ubuntu 18 10 上安装 TensorFlow https www tensorflow org install https www tensorflow org install 我正在使用 pyt
  • MapView 中的强制向下错误

    我想在单击按钮时打开地图 但不幸的是我的应用程序强制关闭 这是我的 logcat 01 31 18 11 49 465 VERBOSE InputDevice 2836 ID 0 0 0 Up 1 gt 0 01 31 18 11 49 6
  • 如何从流中读取特定数量的字节?

    我有一个结构体BufStream
  • “position:fixed”破坏了 CSS 网页中的下拉菜单

    我正在创建一个网页 当我将鼠标悬停在 Soccer部分 它将下拉并显示 Link1 Link2 Link3 如果没有position fixed 代码工作得很好 因为我希望标题位于网页顶部 所以我把position fixed 但一旦我穿上
  • SQL 查询 - 获取最新修订

    我将 T Sql 与 SQL Server 2008 一起使用 假设我有父表 项目 ProjectID ProjectNam 1 Test Project 1 2 Test Project 2 和子表项目修订 ProjectRevID Pr
  • C# 如何确定对象的大小?

    我有以下课程 public class MyClass public string Name get set public int Age get set public double Amount get set 当我尝试使用 WinDbg
  • Windows 上窗口系统的 win32 框架的替代方案

    我想用 C 开发一个不应依赖于 win32 库的自定义窗口系统 例如 Google Chrome 的界面与 Windows 自己的界面不相似 同样 MPCstar 和 adobe 产品也有自己的界面 请帮助我从哪里开始这个项目 您可以使用跨
  • Swift:如何仅更改 webView 中的 或图像大小

    我从服务器获取 HTML 并将其显示在 UIWebView 中 由于要求 未选择 缩放页面以适合 选项 UIWebView 的宽度等于屏幕宽度 高度根据内容而变化 HTML 中的图像标签包含一些内联样式 这些样式在 webView 的视图中
  • Python matplotlib:指定图形大小时未释放内存

    我正在使用 matplotlib 生成许多数值模拟结果图 这些图用作视频中的帧 因此我通过重复调用与此类似的函数来生成其中的许多图 from pylab import def plot density filename i t psi Na