问题标签 [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.
arrays - 如何在 cython 中创建和返回扩展数组?
我想创建一个函数,它创建一个二维数组cdef class
编译时出错:
Cannot assign type 'PyObject *[2][2]' to 'PyObject *'
返回数组的正确方法是什么?
python - Cython:将双 * 堆数组从 cython 函数返回到 python 作为一维 np.ndarray
我正在尝试产生时间序列噪声。我的噪声数组大小约为 350,000,因此它们必须是堆分配的。如何在调用函数时将我的堆分配数组返回给调用该函数的 python 代码?我尝试将其转换为 nd.array 但 python 在编译过程中抱怨。
我是 cython 的新手,希望能对它的工作原理进行真正的解释。我在网上找到的所有东西都非常复杂,对初学者不友好。
另外,如果有人知道如何将 np.random.normal 调用替换为 cython 版本,那就太好了。对于简单的高斯随机数生成器,我在互联网上找不到任何不是超级复杂的东西。
这是我的 pyx 文件:
从python脚本这就是我想使用它的方式:
任何关于如何重构我的课程的建议将不胜感激。再次在这里学习!
c - 如何在 C python 扩展中使用 PyObject* args?
我正在尝试在 C 中做一个简单的扩展,它应该能够扩展 python 代码。我在https://github.com/munirhossain/py_c_extension上找到了该代码
我想修改该代码,就像我调用 helloworld func 时一样,就像helloworld("max")
它在 C 中返回一样Hello max
,但是我该如何使用PyObject* args
:/ 有什么想法可以做到这一点(在 C 中)?
python-3.x - 努力安装pyobject-1.0
我在 Windows 3.9.0 环境下开发了一些 python 代码。我跑pip freeze prog.py > requirements.txt
。然后,我尝试在运行 Python v3.7.3 的 RaspberryPi 上重新创建一个类似的环境。
但是,sudo pip install -r requirements.txt
总是无法安装pyobject
.
我手动尝试显式安装此特定模块,但它不断失败。
你有什么建议吗?
python - 对于传递给 PyMethodDef 数组的方法,不能传递少于或多于 2 个参数
我正在关注这个关于将 c++ 扩展到 python 的文档。就那里演示的内容而言,PyObject *spam_system(PyObject *self, PyObject *args) {...}
传递给数组时工作正常,PyModuleDef
但如果我想向 中添加更多参数spam_system
,则会导致以下无效对话
举个例子,我想定义一个不带参数的方法,并返回一个PyLong_FromLong
from long
/int
如何定义一个不带参数或两个以上参数的方法?(添加两个参数可以test
正常工作)。
python - python bytearray 到 C++ 对象
我想知道我是否可以得到一些帮助。对于上下文,我正在使用一些 C++ 库来生成一些我想通过网络从服务器发送到客户端的大型(想想数百 Mb)对象。
在服务器上,我有以下内容:
这给了我一些 Python 对象。然后我通过 python 套接字将它直接发送给客户端。我正在阅读它
两件事情:
- 累加器(从
cppwrapper.Accumulator()
上面)看起来像
deserializer_func
调用一个看起来像的底层 C++ 函数
我遇到以下错误:
我完全理解它在说什么并且类型是错误的,但我不确定为什么。从文档
如果我理解正确,我正在传递字节数组,但它说它正在期待对象?
我试图这样做的原因是当我使用字节数组或列表进行累积时,即
内存使用和运行时间爆炸
python - PyBytes_FromString 返回一个 None 对象
我想知道我是否可以得到一些帮助。假设我有以下函数来序列化一个对象:
Boost
模块文件有
我在哪里管理对象。
但是,当我在 Python 中调用该方法时,我得到一个 None 对象,输出为
一个是None
,我Length of context: X
到我的控制台
python - 有没有办法在不使用 Python API(例如通过 C、Rust 等)的情况下执行 PyObject 的深拷贝?
我想知道是否有人知道我可以用来在不使用 Python API 的情况下执行 PyObject 的深层副本的实现/库。
我更喜欢 C 中的某些东西(正如我目前使用的那样,并且对 CFFI 有点熟悉),但任何东西(无论是哪种语言 - 例如 RUST),都将不胜感激。
这样做的原因是,我正在尝试对 Python 变量进行分析(对于实时 Python 调试库),但不想在正在分析的程序执行期间执行分析(因为那样会极大地影响程序性能)。
如果我可以在执行后(但在程序终止之前)分析变量,那将非常有帮助。为了做到这一点,我需要将变量保存在其他线程中(最好是不需要 GIL 的 C 程序 - 以便主 Python 程序可以不间断地继续执行)。
我个人认为那里没有任何东西,因为我已经看过了,但认为在 Stack Overflow 上询问某人可能值得一试。
谢谢你。
python - 写入后访问 PyObjects 的问题
我正在尝试使用调用 DLL 函数的 Jupyter 笔记本进行一些相当简单的列表操作。我希望我的 Jupyter 笔记本/Python 代码将 Python 列表传递给 C++ 函数,该函数会修改列表,然后我希望 Python 代码能够访问新的列表值。
我实际上可以读取(在 Jupyter 中)未由 C++ 代码编辑的项目,因此我的编写方式肯定存在一些问题,但我能找到的每个示例看起来都像我的代码。当我尝试访问 C++ 代码写入的列表中的项目时,我的 Jupyter 内核死机而没有任何解释;我尝试在终端中运行相同的 Python 代码,然后终端会话就退出了,再次没有任何解释。
在 Windows 10 上运行,环境为 Python 3.9.2。这是Python:
运行此程序并关闭 DLL 后,运行data_in[1]
返回 6,data_in[2]
返回 9,并data_in[0]
导致我的内核死机。
DLL 的 C 代码:
我还可以在这段代码中插入一些打印语句,表明我可以在调用PyList_SetItem
using 之前和之后读取 DLL 中的所有三个项目,例如PyLong_AsLong(PyList_GetItem(data_out, 1))
. 我不清楚任何引用计数是否需要更改或类似的东西,但也许我误解了这个想法。您的任何想法都将不胜感激。
python - PyObject 中的可变对象,它们的价值是什么?
可变对象如何保存为 PyObject?我知道不可变的保存如下:类型是 int 值是 5 引用计数是 1
可变对象的价值是什么?例如,我使用了一个列表,它是列表本身吗?我知道当我分配一个列表时,列表中值的引用计数增加了 1。