【Python和/或C/C++中的高精度算术?】教程文章相关的互联网学习教程文章

python – C – argsort低效率的矢量版本实现与numpy中的低效率相比【代码】

这是我做的比较. np.argsort定时在float32上,ndarray由1,000,000个元素组成.In [1]: import numpy as npIn [2]: a = np.random.randn(1000000)In [3]: a = a.astype(np.float32)In [4]: %timeit np.argsort(a) 86.1 ms ± 1.59 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)这里有一个C程序执行相同的过程,但是在引用this answer的向量上.#include <iostream> #include <vector> #include <cstddef> #include <algorith...

Python和C耦合【代码】

我尝试使用ctypes.CDLL类(Linux)在Python中加载C共享库.so.这是link告诉我做了什么.正如我在文档中看到的那样,CDLL类假定函数返回int类型.我在这里有一个疑问,如果我需要从C中的函数返回int类型以外的类型变量?我们可以在多大程度上使用Python中的C函数,这意味着使用C共享库和函数的限制/限制是什么 提前致谢解决方法:默认情况下,它假定为int,但您可以将restype设置为任何supported types以覆盖它.例如,来自文档:strchr.restype ...

Python和C交互 – 回调函数【代码】

我正在尝试为我的一个研究项目制作Mac OS的关键记录器.我有一个C代码,它将抓取击键并将它们写入文本文件. (以下代码我已经拿出一些不重要的东西) 我现在需要做的就像PyHook,而不是将数据写入文本文件,将Python回调函数传递给C代码并使其将密钥输入传递回Python,因此我可以使用Python进行必要的分析. 我一直在寻找如何做到这一点,但说实话,我不知道如何处理这个,因为我不习惯C编程或Python扩展.任何帮助将不胜感激.#include <Carbon...

Python C APi Deep Copy

如何使用C API对python对象进行深层复制?我知道我可以使用copy.deepcopy,但如果可以,我更愿意使用C API.解决方法:copy.deepcopy()的功能是completely written in Python.如果有一个C调用来实现相同的功能,我认为他们不会这样做,所以我猜你必须调用copy.deepcopy().

python c api创建一个python模块【代码】

我正在用C语言编写一个python模块,并寻找一种在模块内部编写模块的方法.PyMODINIT_FUNC initA(void) { PyObject* pMod, pSubMod; pMod = Py_InitModule3("A", A_Methods, A_Doc); pSubMod = PyModule_New("B"); PyModule_AddStringConstant(pSubMod, "__doc__", B_Doc); PyModule_AddIntConstant(pSubMod, "SOMETHING", 10); PyModule_AddObject(pMod, "B", pSubMod); ... and so on ...编译后,我试图通过各种导入方法访问模块及其...

使用BOOST.python从C返回一个结构到Python【代码】

我编写了一个C方法,我需要将结构返回给Python.我已经能够按照本link中描述的方法使用BOOST将OpenCV mat从Python发送到C. 现在我需要走另一条路;从C返回到Python,然后在Python中访问该结构.可以吗? 任何样本或参考链接都是好的.我在发布这个问题之前尝试过谷歌搜索,但我无法获得任何样本或解释链接.解决方法:你可以使用modules / python / src2 / cv2.cpp中的另一个函数:PyObject* pyopencv_from(const cv::Mat& m) {if( !m.data ...

python – c将向量的内容作为参数传递给函数【代码】

在python中我们可以这样做:def test(a, b, c):return a+b+cx = [1, 2, 3] y = test(*x)我们可以在C中做类似的事吗?解决方法:到目前为止提出的解决方案基于对函数参数的运行时迭代,这会产生一些成本.他们还假设参数类型是相同的.如果参数的数量在编译时是已知的(通常是),那么一个不同的解决方案就像template <typename F, typename T> auto tuple_call3(F&& f, const T& t) -> decltype(std::forward<F>(f)(std::get<0>(t), std::...

python – 通过C API创建新的numpy标量并实现自定义视图【代码】

精简版 给定一个内置的四元数数据类型,如何查看一个numpy四元数组作为一个numpy浮点数组,其额外维度为4(没有复制内存)? 长版 Numpy内置支持浮子和复杂的浮子.我需要使用quaternions – 它可以概括复数,但不是有两个组件,而是有四个.已经有a very nice package使用C API将四元数直接合并到numpy中,这似乎可以非常快速地完成所有操作. I need to add to it还有一些四元数函数,但我认为我可以处理这些函数. 但是,我还希望能够在使用...

使用Python C API两次调用C函数时出现分段错误【代码】

最近我想使用C包装器从Fortran调用Python(参见here).下面我发布一个更简单的例子.函数的第二次调用导致pModule = PyImport_Import(pName)处的分段错误.我发现问题是来自scipy.optimize导入牛顿线 – 如果我评论它一切正常.任何想法如何解决它? rootC.c#include "rootC.h" #include <Python.h>void root_(double* A, double* B, double* t, double* x) {PyObject *pName, *pModule, *pFunc;PyObject *pArgs, *pValue, *sys, *path;...

Python C扩展不是线程安全的吗?【代码】

我用python脚本做了一个c扩展,这个脚本是相当费力的.代码本身经过了很好的测试和简单.使用一些大型列表调用c扩展,然后执行一些聪明的算法并返回一些新列表. c扩展是100%自给自足,它不使用任何其他c函数,也不使用任何python对象的方法(它确实使用这些标准的Python方法:PyFloat_AsDouble,PyList_GetItem,PyList_Size,PyList_New,Py_BuildValue,PyList_Append ).到目前为止,我只在非多线程环境中使用它. 今天我开始在一个多线程的GU...

Python C API unicode参数【代码】

我有一个简单的python脚本import _tph str = u'Привет, <b>мир!</b>' # Some unicode string with a russian characters _tph.strip_tags(str)和C库,编译成_tph.so.这是一个strip_tags函数:PyObject *strip_tags(PyObject *self, PyObject *args) {PyUnicodeObject *string;Py_ssize_t length;PyArg_ParseTuple(args, "u#", &string, &length);printf("%d, %d\n", string->length, length);// ... }printf函数打印这个:...

使用Python / C API将解释器中PyStrings的值作为C程序中的CStrings获取【代码】

我一直在乱用Python / C API并拥有以下代码:#include <Python.h> #include <stdio.h> #include <stdlib.h>int main(int argc, char *argv[]) {//Initialize PythonPy_Initialize();//Run fileFILE *fp = fopen("Test.py", "r");PyRun_SimpleFile(fp,"Test.py");fclose(fp);//Run Python codePyRun_SimpleString("print(__NAME__)");PyRun_SimpleString("print(__DESC__)");PyRun_SimpleString("print(__SKIN__)");PyRun_SimpleStr...

寻找Psyco的好替代品(Python-> C编译器)

我们真的很喜欢Psyco来加快速度,但它也有一些缺点: >它消耗太多内存>它也可以减慢一些代码>编译代码可能会花费太多时间>它不支持64位系统 什么是好的替代品(需要Django支持)?解决方法:您可以尝试使用PyPy,它是Python中的Python实现.它是标准CPython实现的替代品,并且速度快. 从其网站:Speed: thanks to its Just-in-Time compiler, Python programs often runfaster on PyPy. Memory usage: large, memory-hungry Python progr...

是否有可能在阻止并可能回调为Python的C函数之前释放GIL?【代码】

我正在包装一个执行阻塞操作(选择)的C函数,然后处理传入的消息.我的理解是,当一个C函数要阻塞时,在允许其他线程运行的同时调用它的正确方法是:Py_BEGIN_ALLOW_THREADS blocking_function(); Py_END_ALLOW_THREADS但是,它发生此函数将回调指针作为参数.在处理由C函数预处理的传入消息时调用此回调.我已经成功地将这个回调包装在一个调用PyEval_CallObject()的函数中,允许我传递...

从Python C扩展中导入和使用标准Python模块【代码】

我有用C编写的Python扩展模块.我想在这个C代码中使用标准Python模块之一,例如os或shutil.怎么做到这一点?解决方法: PyObject* os = PyImport_ImportModuleNoBlock("os"); if (os == NULL)return NULL; someattr = PyObject_GetAttrString(os, "someattr"); Py_DECREF(os);如果只导入模块一次,例如,在init_yourmodule()函数中,则使用PyImport_ImportModule(“os”).