Chinaunix首页 | 论坛 | 博客
  • 博客访问: 962590
  • 博文数量: 33
  • 博客积分: 803
  • 博客等级: 军士长
  • 技术积分: 1755
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-05 18:58
个人简介

《Python科学计算》的作者

文章分类

全部博文(33)

文章存档

2016年(1)

2014年(2)

2013年(3)

2012年(27)

分类: Python/Ruby

2012-03-08 22:23:29

我工作的内容大致分为三种:MCU、DSP嵌入式开发,工控软件开发,控制和信号处理的算法研究。

嵌入式开发

开发嵌入式程序主要是C语言和少量汇编,但是Python也派上了大用处,例如可以用它先模拟算法,设计滤波器,绘图。也可以设计一些调试工具,例如通过串口、CAN通信实时观察芯片内存中的数据,有时候调试比较复杂的东西时,甚至可以用pywinauto自动化界面操作,按照一定逻辑排查错误。在这些工作中,Python起到辅助作用。

工控软件开发

工控软件开发主要是通过一些AD,DA,DIO,电机驱动扩展卡,监控传感器,控制电机,读取并分析数据。这些程序原先是采用VC 6.0编写的,界面设计一直很成问题,一个好的绘图控件都没有。后来我改用C#,提高了一些开发效率,但是C#语法比较麻烦,一段时间不接触就忘记了。后来就改用Python,问题是那些扩展卡都没有Python的演示程序,因此需要自己动手用ctypes库调用扩展卡的DLL驱动程序。一旦和扩展卡打交道的程序写好之后,剩下的就是Python的强项了。
  • 用PyQt, wx可以很方便地制作界面,界面要求不高时,也可以用TraitsUI。
  • 绘图工具可以用Chaco, Mayavi, matplotlib,如果要求绘图速度比较高的话,可以用guiqwt,这个是对Qt的qwt绘图库的包装,速度要比其它的都快。
  • 如果需要做图像处理,那么OpenCV就派上用场了。
  • 如果需要高效计算的话,一般可以用NumPy解决,解决不了的就用Cython或者SWIG写一个扩展。有时还需要用多进程模块multiprocessing。
  • 数据存储可以用sqlite,如果是大规模的数据,可以用pyTable保存成HDF5格式。
使用Python能够解决绝大部分的工控软件的需求。

算法研究

Python开发快,比较适合研究算法,虽然执行的时候会很慢,不过也可以通过NumPy, Cython或者寻找一些现成的扩展库改善。当算法比较成型时,再用C, C++改写。

曾经有一个模拟项目的动态性比较高,用Python比较容易实现,运行速度虽然尚能接受,但是有时需要进行上百次模拟运行时,就需要等待很长时间了,因此决定用C++重写。而我的C++水平有限,不知道该如何设计,我最后采用Python动态输出C++代码,调用C++编译器编译成DLL,然后通过ctypes动态载入。由于每次根据用户的设置都会生成C++代码,因此使用的C++功能很基础,没有继承,虚函数等东西,我想能最大地提高程序的运行速度。最终程序的运行速度比Python版本提高了10-20倍(Python版本已经足够优化,使用了NumPy, SciPy的一些高速运算函数,否则纯粹的循环、判断和数值运算的话,C要比Python快几百倍)。

Python的优势

  • 扩展库非常丰富,而且都能看到源代码,源代码有时候比文档更管用。
  • 便携性,我在U盘中安装了一个portablepython,并将所有会用上的扩展库都放进去了,这样无论到哪台机器上,都能运行我的Python程序。
  • Python语法优美,用Python写程序是一种享受。

关于本书的编写

这本书的编写历时近3年,是我在工作中自学的一个总结,因此成书时间拖得比较久。如果真要写的话,书中介绍的每个扩展库都可以写出一本书来,因此这本书只能起到入门、打基础的作用。读者可了解到足够多的库,但是具体到实际工作中的某个问题时,还需要您自行查找文档,甚至分析库的源程序。在解决问题的同时所学习到的才是最有用、最牢固的。

也许您会怀疑花许多时间学习一门新的语言,以及那么多不太出名、甚至文档都不全的扩展库是否值得。那么你可以看看我的经验:我在工作中一边自学一边用来做实际的项目,这几年下来我感觉我的开发效率比用C#时高出3-4倍,比用VC时高出7-8倍。而我获得的回报就是,每天都能不用加班,并且写出了这本书,更重要的是,我还有更多的时间陪伴家人了。

欢迎到本书的论坛共同探讨Python科学计算方面的问题。
阅读(7685) | 评论(4) | 转发(2) |
给主人留下些什么吧!~~

HyryStudio2012-04-07 11:27:01

我很早就接触Python了,但是一直没有在工作中使用,只是自己兴趣爱好。后来逐渐将Python用到工作中,觉过发现工作效率越来越高,自己的业余时间也越来越多。因此就抽空写了这本《Python科学计算》。目前几乎天天都是写Python程序了。根据我的经验,学习Python,首先要喜欢上这门语言,然后无论多困难,都尝试并坚持用它解决工作中的问题。积累到一定阶段,就会发现工作效率会极大地提高了。

rongpmcu2012-03-29 23:08:03

惭愧啊,我是做嵌入式开发的(安防全景监控方面),接触的是linux系统,达芬奇平台,用到的语言一般是c,c++都很少,前不久偶然看到python,说实话,才知道它,但没认真去认识它,你能给我提供点意见吗? 是现在开始接触下python还是先放着。。。学它大概要多久?能给点学python的建议吗?比较有意思的是我昨天才知道python,今天在博客里点击随机看看,就看到了您这篇关于python的文章,看到您对python的这种赞赏,我还真想学下它了

忘忧草5552012-03-12 09:45:18

python与perl,经常用,互补互利

认真的鱼1232012-03-12 07:26:03

Python真是个编程利器啊!