在 C 中加载 python pickled 对象

2024-01-12

我知道pickles可以很容易地加载到python中使用

import pickle
p = pickle.load(open("file.pkl"))

我想知道如何在 python 中的 pyx/C 代码中加载相同的 pickle 文件?我没找到直接加载的方法。

也许解决方案是在 python 中加载并传递对 C 中对象的引用?


简单的答案是使用 Cython 编译代码。那里的一切都会自动完成。

在 Python C API 的上下文中,您可以使用以下内容轻松复制此代码:

PyObject *file = NULL, *p = NULL;
PyObject *pickle = PyImport_ImportModule("pickle"); // import module
if (!pickle) goto error;
file = PyFile_FromString("file.pkl", "r"); // open("file.pkl")
if (!pickle) goto error;
p = PyObject_CallMethod(pickle, "load", "O", file); // pickle.load(file)
error:
Py_XDECREF(pickle);
Py_XDECREF(file);

这是针对 Python 2 完成的,而针对 Python 3 则这样做open("file.pkl")需要通过使用来实现io https://docs.python.org/3/library/io.html#module-io module.

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

在 C 中加载 python pickled 对象 的相关文章

随机推荐

  • 在列表视图中添加复选框 (C#)

    我想在 C 应用程序中显示一个列表视图 其中每一行代表一个产品 因此属性 视图 设置为 详细信息 一列 最后一列 应该是一个复选框 因为它代表产品是否打折 将 checkboxes 属性设置为 true 后 第一列中会出现一个复选框 因此它
  • 如何使用php获取oracle 11g xe中最后插入记录的序列id?

    在这里 我试图插入一条记录并检索最后插入的序列ID 但没有取得任何成功 有人可以帮助我 指导我oracle如何与php一起工作吗 query INSERT INTO hist news id headline reportedon repo
  • .NET Core WebAPI 后备 API 版本,以防缺少次要版本

    经过多次尝试和阅读文章后 我决定将我的问题放在这里 我想要的是 我正在研究应用程序的 api 版本控制 NET Core 支持的版本格式 Microsoft AspNetCore Mvc Versioningpackage 是 Major
  • 将 git 子模块协议从 git 替换为 http

    我从 git URL 添加一个子模块 以便能够在其中进行开发 现在我想部署应用程序并将 URL 替换为 git 因此它不需要从 Capistrano 对子模块的存储库进行身份验证 编辑 gitmodules 中的 URL 是否足以完成此任务
  • TypeScript -> AST -> TypeScript

    有没有办法将 TypeScript 文件解析为 AST 修改 AST 然后将其解析回 TypeScript 作为工具Esprima http esprima org 埃斯科德根 https github com estools escode
  • setNeedsLayout 和 setNeedsDisplay

    两者之间真正的区别是什么UIView方法setNeedsLayout and setNeedsDisplay 像往常一样 文档对此模糊不清 其实文档对此说得很清楚 设置需求布局 http developer apple com librar
  • 确定锁升级的阈值

    我有一个包含大约 250 万条记录的表 将更新其中大约 70 万条记录 并且希望更新这些记录 同时仍允许其他用户查看数据 我的更新语句看起来像这样 UPDATE A WITH UPDLOCK ROWLOCK SET A field B fi
  • 使用 Cython 编译 Python 脚本是否会减少启动时间?

    众所周知 Python 程序启动速度有点慢 用cython编译整个程序可以解决这个问题吗 None
  • 如何在重定向中发送参数 - php codeigniter

    下面的代码给了我一个错误 我想调用一个函数并使用 php codeigniter 向其传递一个参数 redirect base url MainController Student Login user email 这里 MainContr
  • 无法在管道阶段定义变量

    我正在尝试创建一个声明性 Jenkins 管道脚本 但在简单变量声明方面遇到问题 这是我的脚本 pipeline agent none stages stage first def foo foo fails with WorkflowSc
  • 如何返回前一个索引之后的下一个索引?

    例如 str a b c d e f str indexOf 0 str lastIndexOf 12 如何获取第二个括号中的索引 c d int first str indexOf int next str indexOf first 1
  • 从 MVC / IIS Web 应用程序为包含子域提供服务

    我在 tumblr 上托管我的网站博客 博客 withoomph com 我已经修改了博客上的主题 并且想使用我在主网站上使用的自己的字体 我正在尝试从以下位置获取字体 beta withoomph com 但是 当页面尝试获取字体时 我收
  • aio_write() 和 O_NONBLOCK write() 之间的区别

    aio write 和 O NONBLOCK write 有什么区别 另外 我使用 O NONBLOCK 函数使用文件描述符对文本文件进行 write 操作 并通过在函数前后放置一个计时器来将性能与 aio write 进行比较 当字符串长
  • 使用iOS 9.0中的CNContactPickerViewController,如何启用/禁用单选或多选?

    委托 CNContactPickerDelegate 具有用于单选和多项选择的方法 但是当我们呈现视图控制器时 我们如何指定我们想要单选或多选呢 我想我错过了一些可能也会导致我所描述的问题的东西 CNUI 错误 设置了选择谓词 但委托未实现
  • Woocommerce 3 中的可编辑管理自定义计费字段错误问题

    我在此代码中遇到错误 在订单编辑页面中添加可编辑的自定义计费字段 add filter woocommerce admin billing fields order admin custom fields function order ad
  • WordPress 单个帖子内容不显示

    我有一个 WordPress 博客主题 它可以很好地显示索引上所有帖子的内容 但是当我点击其中一篇帖子时 该帖子的内容是空白的 我似乎不明白为什么 如果我是正确的single php控制该页面 http pastebin com afLVx
  • Service Worker 可以获取并缓存跨源资产吗?

    我正在使用一些服务人员代码Google 的渐进式 Web 应用程序教程 https developers google com web fundamentals codelabs your first pwapp 但我收到错误 Uncaug
  • 在 C++ 中声明“全局”变量时,“静态”究竟意味着什么?

    这是一个范围的扩展我之前的问题 https stackoverflow com questions 3415781 what exactly does static mean when declaring global variables
  • querySelector (GetElementByID) - 多个 ID

    我有将公历日期转换为贾拉里日期的功能 它适用于一个标签 但我在一页中有未指定数量的此标签 并且它必须转换所有主题 我知道 getElementById 一次支持一个名称 我正在尝试 querySelector 和 getElementsBy
  • 在 C 中加载 python pickled 对象

    我知道pickles可以很容易地加载到python中使用 import pickle p pickle load open file pkl 我想知道如何在 python 中的 pyx C 代码中加载相同的 pickle 文件 我没找到直接