摘要: 本文使用:Unity3d + opencv + Android Unity3d中可以调用opencv 编译好的.so 动态库,在生成Android apk时可以正常运行。 因为Android系统是基于Linux的,所以不能使用windows编译连接的dll动态库,必须使用.so动态库,CPU架构为A 阅读全文
posted @ 2017-10-14 14:21 建木 阅读(3615) 评论(2) 推荐(1) 编辑
摘要: 本文开始一个系列文章,深入理解Python源码,算是阅读《Python源码剖析》一书的读书笔记,是一项长期进行的工作。一共分三个部分:Python对象模型,Python虚拟机,Python模块动态加载及内存管理。 Python版本:Python-2.7.10 编译工具: Microsoft Visu 阅读全文
posted @ 2017-10-14 12:50 建木 阅读(3399) 评论(0) 推荐(1) 编辑
摘要: 因为项目需要,需要优化已有的Python代码。目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层。如果去掉指令解释这个阶段,直接进入C代码层,效率就比较高了。如果用之前所述的使用Python C API将Python代码改造为C代码并作为Py 阅读全文
posted @ 2017-09-09 13:50 建木 阅读(30524) 评论(2) 推荐(8) 编辑
摘要: 在上一节中,讨论了在用C语言扩展Python模块时,应该如何处理无处不在的引用计数问题。重点关注的是在实现一个C Python的函数时,对于一个PyObject对象,何时调用Py_INCREF和Py_DECREF。在编写C语言代码时,需要了解Python提供的C/C++ API的实现细节,特别是有的 阅读全文
posted @ 2017-09-03 14:20 建木 阅读(6940) 评论(0) 推荐(1) 编辑
摘要: 承接上文,发现在使用Python C/C++ API扩展Python模块时,总要在各种各样的地方考虑到引用计数问题,稍不留神可能会导致扩展的模块存在内存泄漏。引用计数问题是C语言扩展Python模块最头疼的地方,需要由程序员对使用的每个C API都要充分了解,甚至要熟悉源码才能精确掌握什么时候引用计 阅读全文
posted @ 2017-09-02 16:07 建木 阅读(3363) 评论(0) 推荐(3) 编辑
摘要: Python标准库提供了一个有趣的模块:linecache模块。该模块用来从文件中读取任何的行,并且将这些lines使用缓存进行优化,常见的情况是从个大文件中读取指定的行。不过由于此模块使用内存进行缓存文件内容,所以要谨慎使用。在Python中,经常与traceback模块结合使用。 linecac 阅读全文
posted @ 2017-08-16 11:07 建木 阅读(986) 评论(0) 推荐(0) 编辑
摘要: 在上一节中,通过一个简单的例子介绍了C语言扩展Python内建模块的整体流程,从本节开始讲开始深入讨论一些细节问题,在细节讨论中从始至终都会涉及【引用计数】的问题。首先讨论C语言封装的Python函数的参数解析与函数结果返回的封装。 参数解析 最常用的接口是 arg是一个tuple object,从 阅读全文
posted @ 2017-08-15 20:26 建木 阅读(3695) 评论(0) 推荐(1) 编辑
摘要: 本节使用一个简单的例子引出Python C/C++ API的详细使用方法。针对的是CPython的解释器。 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两个点之间的距离。 可以在Python代码这样使用test模块: 先上代码: [test.c] [So 阅读全文
posted @ 2017-08-11 16:51 建木 阅读(3248) 评论(0) 推荐(1) 编辑
摘要: 本系列将介绍如何用C/C++扩展Python模块,使用C语言编写Python模块,添加到Python中作为一个built-in模块。Python与C之间的交互目前有几种方案: 1. 原生的Python C/C++ API, 官网有非常详细的文档说明 2. boost python,一个C++的编程框 阅读全文
posted @ 2017-08-11 11:53 建木 阅读(5025) 评论(0) 推荐(1) 编辑