Tag: python

在C语言中嵌入Python – Segfault

从阅读另一篇文章 ,我试图在C中嵌入一些Python代码: main.c中 #include int callModuleFunc(int array[], size_t size) { PyObject *mymodule = PyImport_ImportModule(“py_function”); PyObject *myfunc = PyObject_GetAttrString(mymodule, “printlist”); PyObject *mylist = PyList_New(size); for (size_t i = 0; i != size; ++i) { PyList_SET_ITEM(mylist, i, PyInt_FromLong(array[i])); } PyObject *arglist = Py_BuildValue(“(o)”, mylist); PyObject *result = PyObject_CallObject(myfunc, arglist); int retval = (int)PyInt_AsLong(result); Py_DECREF(result); Py_DECREF(arglist); Py_DECREF(mylist); Py_DECREF(myfunc); […]

python中的指针

我是一名物理专业的学生,​​主要是用Python和Matlab编程,现在进入C语言以提高我的模拟性能。 简单的问题:Python中有指针吗? Matlab中有指针吗? 如果是的话,我可以使用与C中类似的“轻松”吗? 我知道在Python和Matlab的高级别背后,有很多指针在起作用。 问题是:我可以在Python或Matlab中明确地使用这个C代码: int *p; int someValue = 1; p = &someValue; doSomethingForMe = callSomeFunction(p); 我知道无论如何都可能没有意义(对于大多数应用程序)。 我只是想学习。

IplImage里面的IplImage

是否可以使用OpenCv(JavaCv)将图像放入图像中。 例如,我有一个1000×1000图像和一个100×100图像。 在600×600位置,我想将较小的图像放在较大的图像中。 让我们说蓝盒子是1000×1000 IplImage,红盒子是100×100 IplImage。 是否可以将红色框放在蓝色框中。 计算相当有效,因为它必须实时工作。 Thx提前

在Python中调用C函数并返回2个值

我试图弄清楚如何从我在python中调用的C函数返回2个值。 我已经在线阅读了材料,并使用struct输出两个变量。 当我在同一个C文件中调用此函数时,我能够输出变量。 但是,当我尝试在python中调用它时,它仍然只返回一个值。 这是我的C代码: struct re_val { double predict_label; double prob_estimates; }; struct re_val c_func(const char* dir, double a, double b, double c, double d ) { double x[] = {a,b,c,d}; printf (“x[0].index: %d \n”, 1); printf (“x[0].value: %f \n”, x[0]); printf (“x[1].index: %d \n”, 2); printf (“x[1].value: %f \n”, x[1]); printf (“x[2].index: %d […]

如何让python服务器将recvline转换为字符串?

如何将客户端的输入从服务器转换为字符串或其他一些数据类型。 我的服务器可以从客户端打印recvline,但不会将其识别为常见数据类型… void timing() { for (long i = 0; i < 200000000; i ++){ printf(""); } } int main(int argc, char **argv){ int i; int sockfd; struct sockaddr_in servaddr; char sendline[MAXLINE]; char recvline[MAXLINE]; time_t start, finish, final; start = clock(); timing(); // a function that takes a differential time based on the client finish […]

如何以编程方式确定“写入”系统调用对特定文件是否是primefaces的?

在某些情况下,编码器不能依赖primefaces的系统调用,例如,如果文件在NFS文件系统上。 (参见NFS概述,常见问题和HOWTO文档 )。 但是大多数数据库工作最终都需要primefaces系统调用。 (cf 数据库系统的primefaces性 )。 是否有一种标准(和OS独立)方式确认写入(和其他系统调用)在C(或python)中的特定FILE上是primefaces的。 有什么建议? 后续说明:管道的primefaces性将在下面讨论: unix管道多个编写器 如果同时通过2个不同的进程在同一文件上调用写入系统调用会发生什么 请特别注意“man”页面提取专门处理O_APPEND: 如果设置了文件状态标志的O_APPEND标志,则应在每次写入之前将文件偏移设置为文件的末尾,并且在改变文件偏移和写入操作之间不应进行中间文件修改操作。

Python ctypes:在c中调用具有自定义类型的函数

我正在尝试将预先存在的c代码包装在Linux中用于Python。 我对c的经验不多,而且我正在使用ctypes解决这个问题。 我的C函数需要一个带有自定义类型条目的二维数组,我不知道如何在python中重新创建它以将其传递给c函数。 这是我试图调用的函数: void usbBuildGainTableAI_USB1808(libusb_device_handle *udev, Calibration_AIN table[NCHAN_1808][NGAINS_1808]) { int i, j; uint16_t address = 0x7000; // base address of ADC calibration coefficients. for (i = 0; i < NCHAN_1808; i++) { for (j = 0; j < NGAINS_1808; j++) { usbMemAddressW_USB1808(udev, address); usbMemoryR_USB1808(udev, (uint8_t *) &table[i][j].slope, sizeof(float)); address += 4; usbMemAddressW_USB1808(udev, address); usbMemoryR_USB1808(udev, […]

如何将Cython生成的模块从python导入到C / C ++主文件? (用C / C ++编程)

所以我有一个用python编写的函数,我按照Cython文档“使用distutils构建一个Cython模块”中的步骤进行操作。 但是,我不清楚如何使用在python中工作的模块(通过导入它)嵌入到C / C ++中? 我只想编译一个使用Cython导入python生成模块的C / C ++代码(我想这是一个两步过程) *为了澄清,我已经完成了所有步骤并从.pyx源文件创建了一个python模块。 但我的问题是如何将该模块集成到现有的C / C ++文件中。

从DLL返回的char 转换为Python字符串

我试图将C样式const char []字符串指针(从DLL返回)转换为Python兼容的字符串类型。 但是当Python27执行时: import ctypes charPtr = ctypes.cast( “HiThere”, ctypes.c_char_p ) print( “charPtr = “, charPtr ) 我们得到: charPtr = c_char_p(‘HiThere’) 也许某些事情无法正确评估。 我的问题是: 应该如何将此charPtr转换为兼容Python的可打印字符串? 是刚才提到的演员操作应该做什么?

有没有理由在PyMem_Malloc上使用malloc?

我正在阅读Python C扩展中的内存管理文档,据我所知,似乎没有太多理由使用malloc而不是PyMem_Malloc 。 假设我想分配一个不会暴露给Python源代码的数组,并将存储在一个将被垃圾回收的对象中。 有没有理由使用malloc ?