got*_*nes 25 c python optimization cython python-extensions
Python社区发布了有用的参考资料,展示了如何分析Python代码,以及C或Cython中Python扩展的技术细节.我仍在搜索教程,但是,对于非平凡的Python程序,显示如下:
一个好的教程将为读者提供一种方法,通过完成一个完整的例子来说明如何推理优化问题.我没有成功找到这样的资源.
你知道(或有你写过)这样的教程吗?
为了澄清,我对仅涵盖以下内容的教程不感兴趣:
第1点和第2点只是拇指的基本优化规则.如果您正在寻找任何类型的教程,我会非常惊讶.也许这就是你没找到的原因.我的短名单:
首先,使用常用的python工具分析你的python代码.找到您需要优化的代码.然后尝试优化它坚持使用python.如果它仍然太慢,试着理解为什么.如果它受IO限制,则C程序不太可能更好.如果问题来自算法,那么C也不太可能表现得更好.实际上C可以提供帮助的"好"案例非常少见,运行时不应该离你想要的太远(比如3倍加速中的2倍)数据结构很简单并且会受益于低级别的表示,你真的,真的需要加速.在大多数其他情况下,使用C而不是python将是一项无益的工作.
实际上,很少有人从python中调用C代码,并将性能作为主要目标.更常见的目标是将python与一些现有的C代码连接起来.
正如另一张海报所说,你可能会更好地建议使用cython.
如果你仍然想为Python编写一个C模块,那么所有必要的都在官方文档中.
O'Reilly有一个教程(据我所知,我可以自由阅读,我能够阅读整个内容),它说明了如何分析真实项目(他们使用EDI解析项目作为分析主题)并识别热点.编写C扩展名没有太多细节可以解决O'Reilly文章中的瓶颈问题.但是,它确实涵盖了你想要的前两件事,并带有一个非常重要的例子.
编写C扩展的过程在这里有很好的记录.困难的部分是提出了复制Python代码在C中所做的事情的方法,并且需要教程中难以教授的东西:独创性,算法知识,硬件和效率,以及相当多的C技能.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |