Python在调用C函数时如何处理数组传递
发布时间
阅读量:
阅读量
python调用C函数时的数组传递
2019-4-5
引言:最近为了提高算法运行效率,我决定对算法进行并行优化。最初尝试用Python实现后发现其多线程功能受限于GIL机制(即全局 Interpreter Lock),导致单核处理能力有限。无奈之下我又尝试使用multiprocessing模块来实现多进程处理,在实践中我发现这种方法并不适用于当前算法的设计思路,并非最优选择。于是转而考虑将这部分代码转换为C语言实现,并利用其多线树功能进行优化处理。在实现过程中最令人头疼的问题是如何将Python中的numpy数组数据顺利传递给C函数进行操作。为此我经历了两个晚上的反复调试和学习终于搞通了这一关键环节。
1. ctypes
Python提供了名为ctypes的一个模块来调用C函数。
网上有很多人提示,在Python中使用CTypes功能来实现与C语言动态链接库的调用。
有关CTTypes的详细信息可以在官网找到。
from ctypes import *
2. C函数
2.1 编写C函数
//ctype_test.c
#include <stdio.h>
void onedemiarr(const int * a, int n, int
全部评论 (0)
还没有任何评论哟~
