Gio.MemoryInputStream 关​​闭时不会释放内存

2023-12-19

在 Windows 7 上运行 Python 3.4,Gio.MemoryInputStream 的 close 函数不会释放内存,而它应该释放内存。测试代码是:

from gi.repository import Gio
import os, psutil

process = psutil.Process(os.getpid())

for i in range (1,10) :
    input_stream = Gio.MemoryInputStream.new_from_data(b"x" * 10**7)
    x = input_stream.close_async(2)
    y = int(process.memory_info().rss / 10**6)  # Get the size of memory used by the program
    print (x, y)

这返回:

True 25
True 35
True 45
True 55
True 65
True 75
True 85
True 95
True 105

这表明,在每次循环中,即使 close 函数返回 True,程序使用的内存也会增加 10 MB。 一旦流关闭,如何释放内存?

另一个好的解决方案是重用流。但 set_data 或 Replace_data 会引发以下错误: '不支持数据访问方法。使用普通的 Python 属性来代替' 很好,但是哪个属性呢?

我需要 Python 3.4 中内存中的流。我使用 PyPDF2 创建一个 Pdf 文件,然后我想使用 Poppler 预览它。由于 Poppler 中的错误(请参阅有人能够在 python 中使用 poppler new_from_data 吗? https://stackoverflow.com/questions/42735374/has-anyone-been-able-to-use-poppler-new-from-data-in-python)我无法使用 new_from_data 函数,并且想使用 new_from_stream 函数。


This is GLib 的 Python 绑定中的一个错误 https://bugzilla.gnome.org/show_bug.cgi?id=747431这是无法轻易修复的。

相反,你应该使用g_memory_input_stream_new_from_bytes() https://developer.gnome.org/gio/stable/GMemoryInputStream.html#g-memory-input-stream-new-from-bytes,它以不同的方式处理释放内存,并且不应该遭受相同的错误。


更详细地说,该错误new_from_data()是由内省注释 https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations,GLib 使用它来允许语言绑定自动公开其所有 API,不支持GDestroyNotify参数为new_from_data()需要设置为非NULL函数释放分配的内存,并将其传递给其他参数。在下面运行你的脚本gdb显示 pygobject 通过NULL to the GDestroyNotify范围。它不能做得更好,因为目前还没有办法表达内存管理语义data参数取决于传递给的内容destroy.

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

Gio.MemoryInputStream 关​​闭时不会释放内存 的相关文章

  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • 围绕 readline 构建的 python 批处理的触发器选项卡完成

    背景 我有一个 python 程序 它导入并使用 readline 模块来构建自制的命令行界面 我有第二个 python 程序 围绕 Bottle 一个 Web 微框架构建 充当该 CLI 的前端 第二个 python 程序向第一个程序打开
  • django_openid_auth TypeError openid.yadis.manager.YadisServiceManager 对象不是 JSON 可序列化

    I used django openid auth在我的项目上 一段时间以来它运行得很好 但今天 我测试了该应用程序并遇到了这个异常 Environment Request Method GET Request URL http local
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 如何计算numpy数组中元素的频率?

    我有一个 3 D numpy 数组 其中包含重复的元素 counterTraj shape 13530 1 1 例如 counterTraj 包含这样的元素 我只显示了几个元素 array 136 129 130 103 102 101 我
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • Spring-MVC:如何从控制器流式传输 mp3 文件

    我正在开发一个 Spring MVC 应用程序 我试图在其中传输 mp3 数据 不幸的是 每当发送字节数组信息作为响应时 它就会直接触发下载 我发现了一些其他链接 但其中大多数都与用户界面相关 因此没有多大用处 流式传输 mp3 文件有哪些
  • Internet Explorer 中文本中散布着上标“L”符号

    我正在开发一个文本量很大的网站 该网站在 Chrome Firefox 和 Safari 中看起来都很好 但是当我在 Internet Explorer 中测试它时 它的文本上有随机分散的上标 L 符号 我回头查看代码 看看是否有任何额外的
  • 在哪里可以找到生产中的 Electron 应用程序的日志?

    我已经构建了一个应用程序Electron http electron atom io并使用电子建造者 https github com electron userland electron builder创建一个Squirrel https
  • 在 Docker 容器内进行开发是否可能/合理

    我是 Docker 新手 想知道是否可以 并且是一个好主意 在 Docker 容器中进行开发 我的意思是创建一个容器 执行 bash 安装和配置我需要的一切 然后开始在容器内进行开发 该容器随后成为我的主机 用于 CLI 相关工作 当我在旅
  • C++ 特定的声音输出? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想将一个电路连接到我的计算机 该电
  • 执行操作符而不是整个订阅者

    使用起来相当有吸引力Action s 而不是整个Subscriber当你只需要OnNext 只是因为它更具可读性 但当然 错误会发生 如果你只使用Action1你会得到一个Exception在你的应用程序中 do 运营商 http reac
  • ios标题和副标题在导航栏居中

    我试图在导航栏中添加两个 UILabel 而不是只有一个 我点击此链接以获取有关如何执行此操作的信息 iPhone 导航栏中的标题和副标题 https stackoverflow com questions 2817181 iphone t
  • 在存储过程中使用日期时间作为参数更新表时出错

    将 char 数据类型转换为 DateTime 数据类型导致 DateTime 值超出范围 该语句已终止 ALTER PROCEDURE dbo attendance updatebyemployee id Employee id int
  • iOS CoreData - 启用 sqlite WAL / 预写日志记录有什么缺点吗

    在 WWDC 2013 会议 207 核心数据的新增功能 中 他们提到您可以在添加持久存储时通过传递选项字典来启用 SQLite WAL NSSQLitePragmasOption journal mode WAL 在 iOS4 上可用 并
  • CSS 模块不适用于 React 版本 16.6.0

    我试图在 React 中使用 CSS 模块 这是我的 App js 代码 import React from react import styles from index css const App gt const REACT VERSI
  • 如何将正确的 Cabal 规范与 Travis CI 构建中的每个解析器相匹配?

    更新我的后Haskell 包的 https hackage haskell org package crypto enigma cabal file 到阴谋集团 2 2 https github com orome crypto enigm
  • system()函数属于C还是C++?

    include
  • 如何在.NET中创建和使用资源

    如何创建一个可以在程序的各个部分轻松引用和使用的资源 我的具体问题是我有一个 NotifyIcon 我想根据程序的状态更改其图标 这是一个常见问题 但我已经困扰了很长时间 好吧 在四处搜索并拼凑了 StackOverflow 周围的各个点之
  • Linq.Except 的更多“SQL 语法”

    Linq 中的大多数表达式都可以用两种语法编写 基本上 方法语法和类似 SQL 的语法 例如 方法语法 var results MySet Where n gt n Status State ACTIVE 类似 SQL 的语法 var re
  • 如何将选中的复选框(Aero 主题)渲染到 RenderTargetBitmap?

    我的复选框呈现时没有复选标记 如果我只使用一个复选框 实例对象 进行渲染 那么我可以显示复选标记 但我无法使用此解决方案 我需要能够使用本地复选框渲染它 此复选框通过 PresentationFramework Aero component
  • MySQL触发器中的多个if语句

    如果 MySQL 触发器中有多个 if 语句 最好的方法是什么 目前我的 SQL 如下所示 IF NOT NEW status lt gt OLD status THEN my sql ELSEIF NOT NEW actual lt gt
  • Internet Explorer 11:空白页内存泄漏?

    互联网浏览器 11 版本 11 0 9600 17280 更新版本 11 0 12 KB2977629 HTML 页面 测试方法 导航至页面 打开开发者工具 F12 切换到内存选项卡 开始分析会话 按住页面上的刷新按钮 F5 观察内存的爬升
  • 以编程方式调用 Pylint

    我想调用 Pylint 检查器 仅限于错误信号部分 作为我的单元测试的一部分 所以我检查了 Pylint 可执行脚本 找到了pylint lint Run助手类 在那里我迷失了很长一段时间 init 函数 以调用结束sys exit 有人尝
  • 将表结构复制到sqlite3中的新表

    有没有一种简单的方法将现有表结构复制到新表结构 不需要数据 只需要结构 gt 如 id INTEGER name varchar 20 Thx 你可以使用这样的命令 CREATE TABLE copied AS SELECT FROM my
  • Gio.MemoryInputStream 关​​闭时不会释放内存

    在 Windows 7 上运行 Python 3 4 Gio MemoryInputStream 的 close 函数不会释放内存 而它应该释放内存 测试代码是 from gi repository import Gio import os