- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Python/C API 有许多执行类似操作的相关函数,其中一个通常用于一般用途,另一个在某种程度上更有效或更方便地用于特定情况。
例如,PyDict_SetItem
和PyDict_SetItemString
是相同的,但后者专门用于 C 字符串作为键。对于 PyList_SetItem
和 PyList_SET_ITEM
,第二个没有错误检查,也不减少现有项目 (explained here)。
但是当始终存在 Py_BuildValue
时,为什么要进行像 PyInt_FromLong
这样的特殊转换?两者都返回对 Python 对象的新引用,并且看起来做的事情完全相同。同样的问题适用于 PyInt_FromSsize_t
、PyTuple_Pack
等函数(所有这些都与 Py_BuildValue
相比,当然具有适当的格式字符串)。
什么时候应该使用一个而不是另一个?
最佳答案
对我来说,这是性能和简单性之间的权衡。对于我编写的代码,当我不关心运行时间时(即返回一组不会改变的值,或者运行时间太长额外开销无关紧要),我倾向于使用 Py_BuildValue .) 对于性能关键函数,尤其是那些可能位于循环最内层的函数,我将尽可能使用最低级别的 API 调用。
是否值得是另一个问题。我永远无法收回我为获得最佳性能所花费的时间,但我知道使用我的代码的其他应用程序明显更快。
关于python - PyInt_FromLong 和 Py_BuildValue 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635782/
我正在用 C++ 编写以下代码作为测试用例: using namespace boost::algorithm; static PyObject* strtest(PyObject* self, Py
Python/C API 有许多执行类似操作的相关函数,其中一个通常用于一般用途,另一个在某种程度上更有效或更方便地用于特定情况。 例如,PyDict_SetItem 和PyDict_SetItemS
我是 python 的新手,我正在尝试从 python 调用 C 函数并希望接收两个变量。为了简单起见,我展示了我的示例代码: #include #include PyObject* foo(ch
编辑:我在流程开始时遗漏了 Py_Initialize()。 我在使用 Py_BuildValue 和 PYArg_ParseTuple 时遇到一些奇怪的行为。 首先,每当我尝试构建一个整数时,我都会
我在 docs 中看到,我可以用 int 构建元组值(指定“i”)。我需要用 bool 制作元组,例如(真,10)。我怎样才能用 bool 制作这样的元组(需要什么说明符)? 最佳答案 该转换没有预定
PyObject *list_over_proposals = PyList_New(n_proposals); for (size_t j = 0; j < n_proposals; j++) {
如果它有所作为,我对有关 Python 3 的答案很感兴趣。 文档声明(here 和 here)PyBuffer_Release() 应该在 PyArg_Parse*() 之后调用 s*, y*. 没
我正在尝试使用 Py_BuildValue() 在 C 中创建元组列表。 我正在尝试构建的内容如下所示: [ (...), (...), ... ] 我不知道在编译时要创建的元组数量,所以我不能在这里
这会泄漏吗?: static PyObject* foo(PyObject* self, PyObject* args){ PyObject* list = PyList_New(0);
我目前正在使用 C/Python API 从大型二进制文件中读取数据。Python 中的这个结果不如纯 C 结果(时间 x2)那么高效,因为我认为,将事物包装成 PyObject 所花费的时间。通常,
我有一个巨大的内存泄漏问题,涉及我正在开发的 C 扩展。在 C 语言中,我有一个名为 A 的 double 组和一个名为 AnotherIntVariable 的 int 变量,我想将它们传递给 Py
我是一名优秀的程序员,十分优秀!