<PY><core python programming笔记>C22 扩展Python
2014-05-27 22:16
465 查看
C22 扩展Python
22.1动机
能被整合或者导入到其他Python脚本的代码,都可以称为扩展。
比如一些C、C++、J***A(Jython)、C#(IronPython)、VB.NET(IronPython)代码
关键在导入机制足够抽象
可以手动编译,也可以去下载,最好是在自己电脑上编译,因为就算同架构电脑也不一定编译出相同的二进制文件
http://docs.python.org/ext/building-on-windows.html
扩展的必要性:
添加额外的功能(核心Python并没有提供的功能,可以使用纯Python代码和编译扩展实现)
性能瓶颈的提升(解释型语言的动态翻译导致运行速度比编译型语言慢,做一个简单的代码性能测试,看看瓶颈在哪里
,然后把瓶颈部分在扩展中做)
保持专有源代码私密(脚本语言的共同缺陷是执行的都是源代码)
22.2创建Python扩展
1.创建应用程序代码
2.利用样板来包装代码:
包含Python头文件
为每个模块的每一个函数增加一个形如 PyObject *Module_fuc()的包装函数
int ---PyArg_ParseTuple() 把Python传过来的参数转为C
int ---PyArg_ParseTupleAndKeywords() 转的同时解析关键字参数
PyObject*---Py_BuildValue() 把C的数据转为Python的一个或一组对象然后返回之
str --char* None---NULL int---int long---long str---char float---double
complex---Py_Complex* (any)---PyObject* str---PyStringObject
为每个模块增加一个一个形如PyMethodDef ModuleMethods[]的数组
增加模块初始化函数 void initModule()
3.编译与测试
setup.py编译连接
导入模块
测试
22.3相关话题
1.SWING
按SWING的格式写文件就好了,不用像上面那么麻烦
2.Pyrex
可以让你只取混合语言的优点,最终生成C代码,当然可以编译成普通的扩展
3.Psyco
不用改C代码,自动把字节码转成本地代码,可以检查各部分运行时间,优化瓶颈
可以自动优化
4.嵌入
把Python的解释器包装到C程序中
C22 扩展Python
22.1动机
能被整合或者导入到其他Python脚本的代码,都可以称为扩展。
比如一些C、C++、J***A(Jython)、C#(IronPython)、VB.NET(IronPython)代码
关键在导入机制足够抽象
可以手动编译,也可以去下载,最好是在自己电脑上编译,因为就算同架构电脑也不一定编译出相同的二进制文件
http://docs.python.org/ext/building-on-windows.html
扩展的必要性:
添加额外的功能(核心Python并没有提供的功能,可以使用纯Python代码和编译扩展实现)
性能瓶颈的提升(解释型语言的动态翻译导致运行速度比编译型语言慢,做一个简单的代码性能测试,看看瓶颈在哪里
,然后把瓶颈部分在扩展中做)
保持专有源代码私密(脚本语言的共同缺陷是执行的都是源代码)
22.2创建Python扩展
1.创建应用程序代码
2.利用样板来包装代码:
包含Python头文件
为每个模块的每一个函数增加一个形如 PyObject *Module_fuc()的包装函数
int ---PyArg_ParseTuple() 把Python传过来的参数转为C
int ---PyArg_ParseTupleAndKeywords() 转的同时解析关键字参数
PyObject*---Py_BuildValue() 把C的数据转为Python的一个或一组对象然后返回之
str --char* None---NULL int---int long---long str---char float---double
complex---Py_Complex* (any)---PyObject* str---PyStringObject
为每个模块增加一个一个形如PyMethodDef ModuleMethods[]的数组
增加模块初始化函数 void initModule()
3.编译与测试
setup.py编译连接
导入模块
测试
22.3相关话题
1.SWING
按SWING的格式写文件就好了,不用像上面那么麻烦
2.Pyrex
可以让你只取混合语言的优点,最终生成C代码,当然可以编译成普通的扩展
3.Psyco
不用改C代码,自动把字节码转成本地代码,可以检查各部分运行时间,优化瓶颈
可以自动优化
4.嵌入
把Python的解释器包装到C程序中
相关文章推荐
- <PY><core python programming笔记>C7 字典和集合类型
- <PY><core python programming 笔记>C1 概述
- <PY>Python扩展包安装方法(待更新)
- <PY><core python programming笔记>C16 网络编程
- <PY><core python programming笔记>C21 数据库编程
- <PY><core python programming笔记>C4 Python对象
- <PY><core python programming笔记>C19 图形用户界面编程
- <PY><core python programming笔记>C12 模块
- <PY><core python programming笔记>C18 多线程编程
- <PY><core python programming笔记>C6 序列:字符串和列表和元组(一)
- <PY><core python programming笔记>C3 Python基础
- <PY><core python programming笔记>C11 函数和函数式编程
- <PY><core python programming笔记>C6 序列:字符串和列表和元组(三)
- <PY><core python programming笔记>C6 序列:字符串和列表和元组(二)
- <PY><core python programming笔记>C15 正则表达式
- <PY><core python programming笔记>C20 Web编程
- <PY><core python programming笔记>C5 数字
- <PY><core python programming笔记>C2 快速入门
- <PY><core python programming笔记>C17 网络客户端编程
- <PY><core python programming笔记>C8 条件与循环