Pickling 定义为具有 PyObject* 成员的 C 结构的 Python 扩展类型

2024-04-25

我正在通过 Python 运行 C++ 代码,并且想要 pickle 扩展类型。

因此,我有一个 C++ 结构体 (py_db_manager),其中包含指向数据库对象和对象管理器对象(均用 C++ 编写)的指针,我用 python 类型对象 (t_db_manager) 包装了它们。我的问题是,这个 python 类型需要知道如何腌制两个指针,以便将其发送到一些子多核进程。所以我用copy_reg模块注册了类型(这相当于写一个reduce类型上的 () 方法。但是,我不太确定要放什么进去。我应该使用 PyObject* 还是仅使用整数指针构建一个元组?有人可以帮忙吗?

typedef struct
{
  PyObject_HEAD
  PyObject* man_inst_ ;
  PyObject* db_inst_ ;

}py_db_manager;`

这是 Py_TypeObject

PyTypeObject t_db_manager = {
    PyObject_HEAD_INIT(0)               /* tp_head */
    0,                                  /* tp_internal */
    ".py_db_manager",                  /* tp_name */
    sizeof(py_db_manager)};

这是代码reduce method:

PyObject *pickle_manager(PyObject *module, PyObject *args)
{
    py_db_manager *cpp_manager =0;
    PyObject *values = NULL,
        *tuple = NULL;
    char text[512];

    if (!PyArg_ParseTuple(args, "O!", &t_db_manager, &cpp_manager))
        goto error;
    sprintf(text,"man_inst_, db_inst_");
    if ((values = Py_BuildValue("(sii)", text,
                                cpp_manager->man_inst_, cpp_manager->db_inst_)) == NULL)
        goto error;
    tuple = Py_BuildValue("(OO)", manager_constructor, values);

error:
    Py_XDECREF(values);
    return tuple;
}

因为这会传递给另一个process,仅腌制整数指针将不会像您希望的那样工作。不同的进程使用不同的内存空间,因此它们不see同样的事情。

因此,要回答您的问题,您应该腌制完整的对象并从接收端重建它们。

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

Pickling 定义为具有 PyObject* 成员的 C 结构的 Python 扩展类型 的相关文章

  • 类模板的可变参数构造函数模板的特化

    这是一个带有可变参数构造函数的类 它专门用于从临时对象进行复制和移动 template
  • 使用正在运行的进程的共享内存收集核心转储

    核心转储仅收集进程空间 而不收集为进程间通信创建的共享内存 如何使核心转储也包含正在运行的进程的共享内存 设置核心文件过滤器 proc PID coredump filter per http man7 org linux man page
  • Pandas 多索引数据框删除行

    我的多索引 DF 如下 tuples list zip a a b b c d c d index pd MultiIndex from tuples tuples names i1 i2 df pd DataFrame 5 6 7 8 i
  • 如何在 Ubuntu 上通过 pip 安装 python3 版本的软件包?

    我两者都有python2 7 and python3 2安装在Ubuntu 12 04 符号链接python链接到python2 7 当我输入 sudo pip install package name 它将默认安装python2的版本pa
  • 从网站保存嵌入的 pdf

    我正在编写一个小型 C 应用程序来管理供应商提供的 化学品 安全数据表 目前 我手动搜索该化学品并保存 pdf 并在我的程序中添加指向 pdf 的链接 问题是我还有很多化学品需要处理 所以最好将过程自动化 例如 化学品的部件号如下 2710
  • 如何找到运行代码的 conda 环境的名称?

    我正在寻找一种好方法来从正在运行的代码或交互式 python 实例中找出我所在的 conda 环境的名称 用例是我通过 miniconda 安装运行带有 Python 2 和 Python 3 内核的 Jupyter 笔记本 默认环境是Py
  • 如何让 list_blobs 表现得像 gsutil

    我只想获得 GCS 上假文件夹结构的第一级 如果我运行例如 gsutil ls gs gcp public data sentinel 2 tiles 我得到一个这样的列表 gs gcp public data sentinel 2 til
  • .NET 配置(app.config/web.config/settings.settings)

    我有一个 NET 应用程序 它具有用于调试和发布版本的不同配置文件 例如 调试 app config 文件指向开发SQL服务器 http en wikipedia org wiki Microsoft SQL Server它启用了调试并且发
  • 如何使用 python / pywinusb 将 hid 数据发送到设备?

    我正在尝试使用 pywinusb 将输出报告发送到 pic18f4550 该设备可以接收数据 我已经使用 C 应用程序对其进行了测试 效果很好 另外 我可以使用 pywinusb 从设备读取数据 但我在尝试发送数据时遇到问题 这是我正在运行
  • 如何编辑多个 Pandas DataFrame 浮点列的字符串格式?

    我有一个pd DataFrame浮点数 import numpy as np import pandas as pd pd DataFrame np random rand 5 5 0 1 2 3 4 0 0 795329 0 125540
  • 列表框显示类名称而不是值

    我正在开发一个项目 其中用户应该向动物输入值 名称 年龄 性别等 并且用户输入的值应该显示在列表框中 这些类相互继承 以下是继承的工作原理 Animalclass 是所有类的父类 Mammal类继承自Animal class Dog类继承自
  • tweepy 计数限制为 200?

    我目前正在尝试检索一些拥有大量关注者的大帐户的关注者 我正在使用 Tweepy 和这段代码 带光标 follower cursors tweepy Cursor api followers id id var count 5000 for
  • ASP.NET 5 (vNext) - 配置

    我正在尝试学习 ASP NET 5 我在 Mac OS X 上使用它 此时 我有一个如下所示的 config json 文件 配置 json AppSettings Environment dev DbSettings AppConnect
  • 自定义编译器警告

    在 Net 中使用 ObsoleteAtribute 时 它 会向您发出编译器警告 告诉您该对象 方法 属性已过时 应使用其他内容 我目前正在从事一个需要大量重构前员工代码的项目 我想编写一个自定义属性 可用于标记方法或属性 这些方法或属性
  • 带有 epgm 的 ZeroMQ PUB/SUB 无法接收同一主机上进程发送的消息

    我的所有进程都有两个套接字 一个 PUB 和一个 SUB 并且它们都使用相同的多播地址和端口 例如 PUB 会这样做 绑定 epgm 239 192 1 1 5555 SUB 将执行以下操作 连接 epgm 239 192 1 1 5555
  • Python:使用 FOR 循环插入字典

    我已经在论坛中进行了搜索 但不明白是否可以使用以下构造将新条目插入到我的 Python 字典中 而不将其转换为列表 for x in range 3 pupils dictionary new key input Enter new key
  • C++ 中的 Ofstream 数组

    我想要在我的项目中使用 41 个输出文件来在其上写入文本 首先创建一个字符串数组list为了命名这些输出文件 然后我尝试定义一个 ofstream 对象数组并使用list命名它们 但我收到此错误 outfile cannot be used
  • 捕获 System.Exception 总是不好的做法吗?

    请考虑下面的代码 它抛出三个不同的异常 即 System Configuration ConfigurationErrorsException System FormatException and System OverflowExcept
  • Seaborn 分组条形图,使用总值而不是平均值

    我有一个关于如何组织数据以使用 seaborn 制作条形图的问题 我的数据输入如下所示 influencer platform reach person a instagram 10000 person b instagram 5000 p
  • 将下载的字体添加到 Tkinter

    我想下载一个开源字体并在我的 Python Tkinter 程序中使用它 如何告诉 Tkinter 从目录导入字体或将字体放在与程序相同的文件夹中 Note 我已经寻找答案一段时间了 甚至阅读了 Tkinter 的 API 参考 了解我能找

随机推荐

  • 使用 pysam.TabixFile 注释读取的 Python 脚本中的处理速度振荡

    最初的问题 我正在用 python 3 5 编写一个生物信息学脚本 它解析一个大的 排序和索引的 bam https samtools github io hts specs SAMv1 pdf表示在基因组上对齐的测序读数的文件 将基因组信
  • Spring MVC 3.0 基本身份验证实现

    我目前正在使用 ASP NET 的 Spring MVC 框架将我的 Web 应用程序转换为 Java 不过学习它的好方法 我需要在我的应用程序中实现身份验证 请告诉我我的方法是否足够好和专业 以及如果不是 最好的做法是什么 首先 我正在编
  • TypeScript 传递导入 ES 库

    我想确保我的代码不使用比 ES6 更新的库功能 因此 我的tsconfig json看起来像这样 compilerOptions lib es6 target es6 outDir dist rootDir src module commo
  • 使用 st_buffer 围绕一个地理点画圈

    我想使用都柏林机场周围 110 NM 海里 绘制一个圆sf包裹 稍后我将通过st intersect带有来自 ADS B 的飞行位置报告 我为 NM 定义了一个新单位 如下所示 library units library tidyverse
  • mysql错误1064

    我正在尝试使用以下代码创建一个表 CREATE TABLE IF NOT EXISTS entries id int 10 NOT NULL auto increment atom id varchar 512 NOT NULL title
  • 是否可以在 docker hub 的自动构建中添加环境变量?

    我想自动化我的构建过程 并且需要传递一个环境变量来运行Dockerfile 我想知道在 Dockerhub 中是否有任何方法可以做到这一点 我知道 docker cloud 有类似的东西 但我想知道 Dockerhub 中是否有这个功能 因
  • Swift-Mailer 错误,“给定邮箱中的地址 [] 不符合 RFC”

    我构建了一个简单的 PHP 联系表单 该表单应该通过 Swiftmailer 脚本发送邮件 问题是我不断收到此错误 未捕获的异常 Swift RfcComplianceException 与 message 给定邮箱中的地址 不符合 RFC
  • MySQL C++ 连接器使用 SELECT 查询获取字符串

    我是 C 上的 mysql 新手 之前在 PAWN 上做过 效果很好 但现在我遇到了问题 我正在尝试从 mysql 数据库获取密码 稍后再执行其余代码 然后我会得到十六进制代码 如果是的话 这是我得到的示例 0x59fcb0 当我重新启动程
  • “缺少可链接的主机!”为设计

    我安装了 Devise 但每当我尝试创建帐户时 事情似乎都会停止 完整的错误如下 Missing host to link to Please provide host parameter or set default url option
  • 使用Delphi Dll和一些问题

    我想使用Delphi制作的dll 它有这个功能 函数 CryptStr str Key AnsiString DecryptStr boolean AnsiString 标准调用 我将 Dll 复制到 bin debug 和应用程序根目录中
  • vb.NET 将 JSON 列表反序列化为对象

    我还没有找到我正在寻找的确切答案 所以我想我会尝试提出这个问题 我目前正在尝试使用 Json NET 将 JSON 字符串反序列化为 vb NET 中的对象 我之前已经通过设置适当的类 然后使用父类将字符串反序列化为对象来完成了一些工作 并
  • 您如何在网络上搜索与编程相关的信息? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 NoSQL 文档存储数据库有哪些实际用例?

    在过去的几天里 我一直在阅读文档并观看特定于 Mongo DB 的截屏视频 我不知道像这样的解决方案何时会比典型的 pg 或 mysql 环境更好 具体来说 我的问题是在什么情况下 有用例就很好 你会选择 nosql 路线 Thanks 许
  • 如何为材料表与单元格内的下拉菜单设置正确的绑定?

    我目前有一个角度材料表 它从我拥有的 api 端点返回值 目前 它返回正确的值 但我有选择下拉列表的单元格除外 这是我的材料表选择下拉列表的片段 div class matTable container div
  • 嵌入 YouTube 播放列表插件,侧边栏列表可见

    我知道 YouTube API 目前不提供显示类似于原生 YouTube 播放列表的播放列表侧边栏的功能 通过搜索 我找到了一个有前途的插件来模仿这种行为 https github com jakiestfu Youtube TV http
  • 使用powershell自动打印html文件

    我想使用 powershell 将 html 文件打印到默认打印机 假设我有文件 c test html 其中包含以下文本 p hello b world b p 如何将 test html 打印到默认打印机 先感谢您 get conten
  • 检查对象是否是 NSArray 或 NSDictionary

    根据主题 我如何检查一个对象是 NSArray 还是 NSDictionary if obj isKindOfClass NSArray class Is array else if obj isKindOfClass NSDictiona
  • 如何加载和使用使用 Mallet 训练的 CRF?

    我使用以下方法训练了 CRFGenericAcrfTui 它写了一个ACRF到一个文件 我不太确定如何加载和use经过训练的 CRF 但是 import cc mallet grmm learning ACRF import cc mall
  • 中国地图 - 卫星地图和默认街道地图哪个是正确的?这是否意味着地理编码结果是错误的?

    因此众所周知 这些地图 无论是常规街道地图还是卫星地图 在中国的特定地区都无法正确排列 那么哪个地图排列正确 是卫星地图还是默认街道地图 一些网站表明卫星地图是正确的 但谷歌地理编码器在谷歌街道地图上正确放置位置 而不是在卫星地图上 那么
  • Pickling 定义为具有 PyObject* 成员的 C 结构的 Python 扩展类型

    我正在通过 Python 运行 C 代码 并且想要 pickle 扩展类型 因此 我有一个 C 结构体 py db manager 其中包含指向数据库对象和对象管理器对象 均用 C 编写 的指针 我用 python 类型对象 t db ma