问题标签 [pyobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 C++ 中通过继承自定义 PyObject
长期 Python 程序员,第一次 C++ 扩展编写者。无论如何,为了好玩,我正在尝试在 C++ 中为 python 创建一个链表模块。这是我的代码
我可以这样做吗?大多数文档都是针对 C 的,但是我可以从 PyObject 继承并像这样返回它吗?现在有效的是:
但是一旦我调用l.get_value()
python,我就会得到一个段错误。我知道我所做的可能是错误的,所以有人会这么好心地指出我正确的方向吗?
为了澄清起见,我知道LinkedList<char*>
命名的“ll”在linkedlist_new
函数完成后被销毁,这是我遇到的问题的一部分。让我们假设我非常非常迷失......
python - 将 PyObject* 转换为 C++ 对象
我有一个共享库(util.so),它将以下内容返回给 python:
我使用以下命令从我的 python 脚本中调用该方法:
Python:
当我将它传递给我的其他测试库 (test_library.so) 时,它作为 PyObject* 传递,我如何访问我的 test_library.so 中的 cv::Mat?:
Python:
C++
目前,我的 test_library 没有与 util 链接,它们是单独的 .so 文件。
julia - Julia:将 PyObject 转换为数组
在 Julia 中,我正在调用 Python 模块 pandas_datareader 从网络下载数据:
变量 gdp 是一个 PyObject 对象。因此,我无法操纵它(以日志为例)。如何将其转换为数组?我试过 convert(Array{Float64,2},gdp),但它只会让 Julia 崩溃。
谢谢!
python - 使用 Python C-API 定义内部类
在 Python 中,定义内部类很简单:
...可以按照预期访问内部类,例如通过执行MyClass.MyInnerClass
.
我正在尝试使用扩展模块设置类似的东西。通常,将定义的扩展类型添加到模块<modulename>init()
函数中的扩展模块对象,代码如下:
为了设置内部类,我改变了这种方法来尝试添加 aPyTypeObject*
作为 another 的属性PyTypeObject*
,如下所示:
......我认为PyObject_SetAttrString()
可以作为C-API 文档中“类型对象”的介绍特别说明:
可以使用任何
PyObject_*()
或PyType_*()
函数来处理类型对象 […]
…我PyType_Modified()
根据文档中的描述添加了调用。但是这样:当我编译所有内容并尝试加载扩展时,我收到了这个错误:
……我想我的做法是错误的;我应该尝试什么?
python - 使用 Py_BuildValue() 在 C 中创建元组列表
我正在尝试使用Py_BuildValue()
在 C 中创建元组列表。
我正在尝试构建的内容如下所示:
我不知道编译时要创建的元组数量,所以我不能在这里使用一些静态数量。
基本上Py_BuildValue()
在这里使用一个元组是代码的样子:
但这仅适用于一个元组。我需要在列表中有多个可以通过 for 循环添加的元组。我怎样才能做到这一点?
python - 访问python对象指针数据
我有一个 python set
,其中包含一组我想要处理的具有统一类型的不可散列的 python 对象。
为了提高我的算法的效率,我想使用 ctypes 与仅接受uint64
作为数据值的外部索引实现进行接口。
我希望我可以将指向 python 对象的指针引用传递到这个外部库中uint64
?
我试过ctypes.cast(ctypes.py_object(my_python_object), ctypes.c_uint64)
了,但我得到了ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
。
另外,反过来呢,获取对 python 对象的引用uint64
并将其转换为“真正的”python 对象呢?
python - Python,Gtk3:如何在其他东西运行时使进度条跳动
基于类,我有一个包含一个button
和progressbar
的窗口,每当单击按钮时,都会发生两件事:
1 - 应将对话框中的输入值传递给
class ABCD
2 - 当我们的班级
ABCD()
做他的事情时,我们的进度条是否应该定期跳动,直到班级 ABCD() 完成过程。
所以问题是进度条只脉冲一次,然后卡在那里直到类 ABCD() 完成,然后它开始有规律地脉冲。
这是我的尝试:
正如我们在这里看到的,我已经尝试在这部分代码中制作脉冲并刷新窗口
否则,因为
my class ABCD()
我time.sleep(10)
应该只在 10 秒后才停止该时间的进度条脉冲。
这段代码应该如何,我需要有人为我提供正确的代码,几乎没有解释。
dynamic-memory-allocation - Python C 扩展 - 尽管返回的 PyObjects 上的 Refcount = 1,但内存泄漏
我使用 Python C API 反复调用我用 C++ 编写的 Python 模块。我的 python 程序反复调用我的模块的pyParse
函数,该函数做了很多事情并返回PyTuple
包含更多PyTuple
对象作为元素的 a。每个返回的对象都以PyObject->refcnt
1 结束,所以你知道当它超出 python 的范围时应该删除该对象。我用类似下面的python代码反复调用这个模块:
这个循环运行的时间越长,内存使用量就会越多。每次迭代都会产生大约 2kb 的元组(应该在每次迭代结束时销毁)。然而,当我拍摄“堆快照”并在以后多次迭代时将早期的快照与另一个进行比较时,您可以看到调用的内存分配PyTuple_New
和其他 python 对象不断增长。
然而,因为每个返回的对象都有 1 作为引用计数,所以我希望它在超出 python 的范围后会被销毁。最后,我的程序在read access violation
代码的随机部分结束。有什么我想念的吗?或者有谁知道如何调试这个并更好地处理正在发生的事情?我很绝望!
python - ld:警告:无法为 _ffi_call_unix64 创建紧凑展开:不使用基于 RBP 或 RSP 的框架 x86_64 架构的未定义符号:
我试图从这里将 Python.framework 包含到 iOS 中。
我收到以下错误:
ld:警告:无法为_ffi_call_unix64创建紧凑展开:不使用基于RBP或RSP的框架x86_64架构的未定义符号:“_adler32”,引用自:Python中的_zlib_adler32(zlibmodule.o)“_sqlite3_user_data”,引用自:__pysqlite_func_callback Python(connection.o) __pysqlite_step_callback in Python(connection.o) “_sqlite3_value_blob”,引用自: __pysqlite_build_py_params in Python(connection.o) “_sqlite3_value_bytes”,引用自: __pysqlite_build_py_params in Python(connection.o) “_sqlite3_value_double”,引用自:Python中的__pysqlite_build_py_params(connection.o)“_sqlite3_value_int64”,引用自:Python中的__pysqlite_build_py_params(connection.o)“_sqlite3_value_text”,引用自:Python 中的 __pysqlite_build_py_params(connection.o) “_sqlite3_value_type”,引用自:Python 中的 __pysqlite_build_py_params(connection.o) “_zlibVersion”,引用自:Python 中的 _PyInit_zlib(zlibmodule.o) ld: symbol(s)未找到架构 x86_64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)链接器命令失败,退出代码为 1(使用 -v 查看调用)链接器命令失败,退出代码为 1(使用 -v 查看调用)