<转帖子请注明出处>python
①软件专业性增强。许多的软件都要作软件工程,要团队进行合做开发,单打独斗已经没法开发出功能很强的软件;这类程序员对某个编程软件要很是精通,但对其余的软件程序员
②我的编制一些对工做有帮助的软件。这类软件并不要求很高的安全性。方便快捷是它的特色。这类程序员因此的编程语言不少,不少语言都懂一些,但不专精。数据库
Python:编程
Python在工做中用的不少:扩展库较多、语法简洁、能够边用边写脚本、能够很是的方便。安全
可是有一个问题很让人困扰:要进行大规模的数据计算的时候,运行时间太长让人难以忍受。网络
网上查找了不少的资料,有不少的加快python的方法:编程语言
+ pysco: 好像速度提高不错,可是2.7以上再也不支持,主要缘由是它太占用资源,因此python社区把它给放弃了;函数
+ pypy:另外再搞一个python? NO! 很明显,我要放弃不少CPYTHON中支持的资源。学习
+cython: 这货基本就是C语言语法、python语法的综合体。同时考虑两种语言,写程序的时候是否是更容易出错?放弃。测试
Freebasic:
这个是让我兴奋而有伤感的语言。
兴奋的理由:FreeBasic支持东西太多了:跨平台、语法基本同传统的BASIC,不存在语言上的学习难度、支持指针、支持类(简易)、动态库dll,so编写、编译速度快、运行速度快(GCC至关)、帮助文件很是全面,几乎全部问题在帮助文件上能够找到、持库不少:图形、数据库、游戏等等。简单来讲,这货就是一个basic语法的C语言!
伤感的理由:这么功能全面,体积很小的软件在国内居然看不到有热闹的论坛!可是国外却有很多。好像国内程序猿的素质都很高,都去作网络应用去了,不屑于搞这个了(好吧,看看如今国内软件体积有多么庞大就知道了)。
好的,下面它就要出场了。看看它是多么的简洁,强大!
好吧,我考虑的思路仍是让python直接调用底层的dll来加快速度。网上也有很多这样的示例。用ctypes调用C编写的dll动态库。
若是你对C很是精通,那就跳过;若是你想更简单一点的话,就看个人示例吧。
Freebasic 的 函数编制中加入 “export”关键字就能够导出一个标注的.dll,.so库了。
程序以下:
如下文件名称为dll.bas
'1.函数test Function test Cdecl Alias "test"( byval operand1 as integer, byval operand2 as integer ) as integer export 'OK!-按值传递 '调用示例 'from ctypes import * ' '#libtest=CDLL("D:\pythonUser\dll.dll") 'libtest=cdll.LoadLibrary("D:\pythonUser\dll.dll") 'print libtest.test(10,12) '结果为-2 ' Return operand1 - operand2 end Function '2.函数test3 Function test3 Cdecl Alias "test3"( operand1 as integer, operand2 as integer ) as integer export 'OK!-按地址传值 '调用示例 'from ctypes import * ' '#libtest=CDLL("D:\pythonUser\dll.dll") 'libtest=cdll.LoadLibrary("D:\pythonUser\dll.dll") 'print libtest.test3(10,12) '结果为-2 Return operand1 - operand2 end Function '3.函数test2 Function test2 Cdecl ( byval operand1 as integer, byval operand2 as integer ) as integer export ' 错误:导出函数没有别名“alias”,没法被python找到函数名 ' ctypes 导入时正确 ' 可是调用 print libtest.test2(10,12)时,没法找到函数名 ' Traceback (most recent call last): '----------python 错误列表--------------------- ' File "<stdin>", line 1, in <module> ' File "C:\Python27\lib\ctypes\__init__.py", line 378, in __getattr__ ' func = self.__getitem__(name) ' File "C:\Python27\lib\ctypes\__init__.py", line 383, in __getitem__ ' func = self._FuncPtr((name_or_ordinal, self)) ' AttributeError: function 'test2' not found '----------------------------------------------- Return operand1 - operand2 end Function
'编译:
'C:\Program Files\FreeBASIC\fbc -s gui -dll -export "dll.bas"
'生成 dll.dll 连接库
把dll.dll文件放到 c:\python27 安装目录下,
from ctypes import * libtest=CDLL("dll.dll") print libtest.test(10,12)
也一样能够!
你看是否是很简单?能够说是完美!
经测试,一样的代码,dll能够提升5倍左右的速度。毕竟是GCC级的编译水平嘛。
但愿可以对您的编程起到帮助做用!