简单的讲,库就是别人(或者你自己)实现的可以提供某种功能的代码;
创新互联公司科技有限公司专业互联网基础服务商,为您提供四川联通机房服务器托管,高防服务器,成都IDC机房托管,成都主机托管等互联网服务。
lib下面放一般都是你import的包,其实也可以不用放到lib下面,你就放在你写的.py同一目录下也能import到,但是一般规范都放到Lib下面,对应生成的pyc文件也会在lib都用,这个文件直接拿出来就能用,并且别人没办法看到里面的内容
本文演示了在python中调用C语言生成的动态库,返回结构体指针,并进行输出!
test.c(动态库源代码)
// 编译生成动态库: gcc -g -fPIC -shared -o libtest.so test.c
#include stdio.h
#include string.h
#include stdlib.h
typedef struct StructPointerTest
{
char name[20];
int age;
}StructPointerTest, *StructPointer;
StructPointer test() // 返回结构体指针
{
StructPointer p = (StructPointer)malloc(sizeof(StructPointerTest));
strcpy(p-name, "Joe");
p-age = 20;
return p;
}
编译:gcc -g -fPIC -shared -o libtest.so test.c
call.py(python调用C语言生成的动态库):
#!/bin/env python
# coding=UTF-8
from ctypes import *
#python中结构体定义
class StructPointer(Structure):
_fields_ = [("name", c_char * 20), ("age", c_int)]
if __name__ == "__main__":
lib = cdll.LoadLibrary("./libtest.so")
lib.test.restype = POINTER(StructPointer)
p = lib.test()
print "%s: %d" %(p.contents.name, p.contents.age)
最后运行结果:
[zcm@c_py #112]$make clean
rm -f *.o libtest.so
[zcm@c_py #113]$make
gcc -g -fPIC -shared -o libtest.so test.c
[zcm@c_py #114]$./call.py
Joe: 20
[zcm@c_py #115]$
准备工具
libsvm软件包;
电脑;
步骤操作
把包解压在C盘之中,如:C:\libsvm-3.18;
用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘;
进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存;
例子举例
常用接口
提高预测的准确率