我喜欢几乎所有东西都使用python,并且总是清楚地知道如果由于某种原因我在我的python代码中找到了一个瓶颈(由于python的限制),我总是可以使用集成到我的代码中的C脚本。
但是,当我开始阅读有关如何集成python的指南时。 在文章中,作者说:
有几个原因可能导致人们希望在C或C ++中扩展Python,例如:
关于表现没什么。 所以我再问一遍,将python与c集成以获得性能是否合理?
根据我的经验,很少需要使用C进行优化。我更喜欢在Python中识别瓶颈并改进这些领域的算法。 使用哈希表,缓存以及通常重新组织数据结构以满足未来需求,可以极大地加速您的程序。 随着您的程序的发展,您将更好地了解可以预先计算哪种材料,因此不要害怕返回并重做您的存储和算法。 此外,寻找机会杀死“一石二鸟”,例如在渲染物体时对物体进行分类,而不是做大量的物体。
当所有事情都根据您的知识运作时,我会考虑使用像Psyco这样的优化器。 仅仅通过使用Psyco并在我的程序中添加一行,我的性能提升了10倍。
如果所有其他方法都失败了,请在适当的位置使用C,您就可以获得所需的内容。
*优化代码中的内部循环
这不是性能吗?
性能是一个广泛的主题,因此您应该更具体。 如果程序中的瓶颈涉及大量网络,那么用C / C ++重写它可能不会产生任何影响,因为网络调用占用时间而不是代码。 你最好重写程序的慢速部分以减少网络调用,从而减少你的程序花在等待entwork IO上的时间。 如果你正在做数学密集型的东西,比如求解微分方程,而且你知道C库可以提供更好的性能,那么你目前在Python中的方式可能需要重写程序部分以使用这些库来增加它的性能。
众所周知,C扩展API难以使用,但是还有许多其他方法可以集成C代码。
有关更多可用的替代方法,请参阅https://www.scipy.org/PerformancePython ,特别是关于使用Weave轻松内联C代码的部分。
同样令人感兴趣的是Cython ,它提供了一个很好的系统来集成C代码。 Cython用于一些备受推崇的高性能Python项目(如NumPy和Sage)进行优化 。
如上所述, Psyco是另一个有吸引力的优化选择,而且只需要一个
import psyco psyco.bind(myfunction)
Psyco将识别您的内部循环并自动替换例程的优化版本。
C绝对可以加速处理器绑定任务。 现在使用ctypes库可以更轻松地进行集成,或者您可以使用您提到的任何其他方法。
如果你想以他们的代码为例,我觉得mercurial在集成方面做得很好。 计算密集型任务在C中,其他一切都是python。
使用Python中的C(假设代码写得很好等)可以获得很大的性能提升,因为Python是在运行时解释的,而C是事先编译的。 这将加速一些事情,因为使用C,您的代码只是运行,而使用Python,Python解释器必须弄清楚您正在做什么并将其解释为机器指令。
我被告知计算部分使用C作为脚本使用python。 所以是的,你可以整合两者。 C能够比python更快地进行计算
以上就是c/c++开发分享将python与c集成以提高性能是否合理?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/549913.html