Python中的优化技术

fea*_*rix 11 python

最近我用Python/Django为我的公司开发了一个计费应用程序.几个月来一切都很好,但现在我观察到由于越来越多的用户使用该应用程序,性能正在下降.现在问题是应用程序现在对财务团队非常关键.现在,财务团队正在追寻性能问题.我没有其他选择,只能找到一种方法来提高计费应用程序的性能.

那么你们是否知道python中的任何性能优化技术将真正帮助我解决可伸缩性问题

伙计们我们使用的是mysql数据库,它托管在Linux机器上的apache web服务器上.其次我注意到的是,所有应用程序都很慢,而不是数据库事务部分.例如,一旦加载了应用程序,它就可以正常工作,但如果它们导航到该应用程序上的其他链接,则需要花费大量时间.

是的,我们正在使用HTML,CSS和Javascript

e-s*_*tis 11

正如我在评论中所说,您必须首先找到代码的哪一部分很慢.

没有这些信息,没有人可以帮助你.

您可以使用Python分析器对代码进行分析,然后返回结果.

如果它是一个Web应用程序,第一个嫌疑人通常是数据库.如果它是一个微积分密集的GUI应用程序,那么首先看计算算法.

但请记住,对于汽车来说,汽车问题非常不直观,因此客观评估是唯一可行的方法.

  • 我参加了一次5 DBA讨论如何在数据仓库项目中保存100Gb的会议.我说我们可以全部开车到苹果商店购买1Tb磁盘,价格低于本次会议对公司造成的损失.在错误的地方度过的大量努力浪费了时间. (2认同)

ryt*_*tis 6

好吧,不完全是关键,但在你开始修复之前,确保每个人都了解情况.在我看来,他们给你施加了一些压力来解决"问题".

首先,当您编写应用程序时,是否已指定性能要求?他们是否告诉你他们需要操作X才能完成不到Y秒的操作?它们是否指定了必须支持多少并发用户而不会对性能造成损害?如果没有,那么告诉他们退出,并且它是迭代(阶段,阶段,无论什么)部署之一,主要目标是功能和测试.第二阶段是性能改进.让他们(显然有你的帮助)提出一些非功能性的系统性能要求.

通过这一切,a)你将消除财务团队施加的压力(我知道他们可能是一个真正的痛苦)b)你和你的客户都会清楚地知道你的意思"性能"c)您将拥有一个可以衡量进度的基础,最重要的是d)您将有一些约定的时间来实施/修复性能问题.

PS.除此之外,看看索引...... :)


for*_*ran 4

Python 的一个令人惊讶的特性是 pythonic 代码非常高效......所以有一些一般提示:

  • 尽可能使用内置函数和标准函数,它们已经经过了很好的优化。
  • 尝试使用惰性生成器而不是一次性临时列表。
  • 使用 numpy 进行向量运算。
  • 如果在 x86 32 位上运行,请使用 psyco。
  • 使用较低级语言(C、Pyrex、Cython 等)编写性能关键循环。
  • 当调用对象集合的相同方法时,获取对类函数的引用并使用它,它将保存在对象字典中的查找(这是一个微优化,不确定是否值得)

当然,如果可扩展性很重要的话:

  • 使用O(n)(或更好的)算法!否则你的系统无法线性扩展。
  • 编写多处理器感知代码。在某些时候,您需要投入更多的计算能力,并且您的软件必须准备好使用它!