当前位置:  开发笔记 > 编程语言 > 正文

如何加快Python执行速度?

如何解决《如何加快Python执行速度?》经验,为你挑选了2个好方法。

我有一个用Python编写的项目,它可以处理大量数据.我想加快执行时间.

简单来说,假设我有这个示例完全优化的代码:

def foo(x):
   doSomething

main():
   for i in range(1,10000000):
      foo(i)

有没有办法加快这个?例如,通过使用多处理或其他东西?最重要的是,它值得吗?

谢谢你的回复.我想我会尝试多处理的路线.有人可以建议我一个指导或一些帮助我的例子吗?



1> N3dst4..:

要先回答你的上一个问题,如果你遇到性能问题,那就值得了.这是唯一的标准,真的.

至于如何:

如果你的算法很慢,因为它的计算成本很高,可以考虑将它重写为C扩展,或者使用Cython,它可以让你用Python式语言编写快速扩展.此外,PyPy变得越来越快,可能无需修改即可运行代码.

如果代码的计算成本不高,但它只是循环很大,那么可以通过Multiprocessing将其分解,这样就可以并行完成.

最后,如果这是某种基本数据分散任务,请考虑使用快速数据存储.所有主要的关系数据库都在wazoo上进行了优化,您可能会发现只需让数据库为您完成任务就可以加快您的任务.您甚至可以将其塑造成适合Redis商店,这可以很好地聚合大数据集.



2> Noufal Ibrah..:

唯一真正了解的方法是分析和衡量.你的代码可以做任何事情."doSomething"可能是一种time.sleep(10)情况,在这种情况下,分离10000000进程将使整个程序在大约10秒内运行(忽略分叉开销并导致减速).

使用http://docs.python.org/library/profile.html并检查瓶颈的位置,看看是否可以使用更好的编码优化"完全优化"程序.如果它已经足够快,请停止.

然后,根据它的CPU或I/O限制以及您拥有的硬件,您可能需要尝试多处理或线程.如果你的问题可以解决,你也可以尝试分发到多台机器并做一些map/reduce事情.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有