【问题标题】:Migrate python code to pypy or something more on future reliable将 python 代码迁移到 pypy 或更多关于未来可靠的东西
【发布时间】:2013-02-06 14:04:22
【问题描述】:


我想知道将我的 python 应用程序迁移到 PYPY 是否可靠。我需要特别提高我用于科学监控的许多 python 代码和基于扭曲的模块的性能,并且我正在考虑未来的方法。

Python 基础没有表现出提高 CPython 性能的意图,无论是使用 pypy 或 Cython 的某些模型。

没有必要重新发明轮子,但 Guido 似乎并不介意这些需求python用户的。在这种情况下,很难确定方向,该怎么做?

...而且我绝对不想使用另一种编程语言。

PD:实际上我使用的是 2.7 版本...

已编辑:我的代码已经过多次分析和测试,否则我不会问...谢谢您回答弗朗西斯,无论如何...

已编辑:我想了解更多关于此的意见...

【问题讨论】:

  • 为了提高关键部分的性能,您应该考虑直接使用 Cython,或者绑定优化的 C 代码。
  • 您知道您的代码不必“迁移”到 PyPy 对吧? PyPy 实现 Python 语言,与 CPython 类似,与 Cython 不同

标签: python python-3.x python-2.7


【解决方案1】:

我认为你对 CPython 的印象是错误的。 CPython 是参考实现,将始终具有最新的 Python 功能和最新版本的 Python。性能很重要,CPython 的性能随着每个小版本的发布而显着提高。 CPython 绝对是当今可用的实现中最“未来可靠”的。

但是,CPython 的一个非常重要的特性是桥接到 C 环境,即运行用 C 编写的模块,这些模块包装 C 库或包含进行手动内存管理的微调 C 代码。使用 C 模块限制了您可以执行的奇异运行时内容的数量。例如。如果您使用用 C 编写的任何 Python 模块(如果它完全运行的话),那么 PyPy 的性能会显着下降!

您可以尝试 PyPy、Cython、IronPython、Jython 等,看看它是否适合您,但如果您使用任何 C 模块,可能会感到失望。

您的方法应该是profile your code 并识别任何热点或内部循环并优化它们。由于您有一个 IO 驱动的应用程序,我强烈怀疑您的大部分“缓慢”与您的 Python 实现无关,而是与 IO 相关活动有关。可能不是您的应用程序需要调整,而是运行它的机器。

【讨论】:

  • 代码已经过多次分析和测试,否则我不会问...谢谢您的回答..
  • 您的应用在做什么与 IO 无关,而 Python 会成为瓶颈?也许您需要不同的设计?
猜你喜欢
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2022-06-18
相关资源
最近更新 更多