信息:我正在使用 Django。问题:Python 的速度是否足以提供低延迟的Web 服务,或者我应该使用 Pyrex 将我的函数转换为 C 吗?
4 回答
真的,你能知道的唯一方法(IMO)就是尝试看看。如果您开始遇到性能问题,那么是时候进行分析了,看看是代码执行还是其他原因导致了延迟。
就个人而言,我认为你不会有任何问题。但话又说回来,这取决于您的 Web 服务到底在做什么。
很多人确实使用 Python 来实现 Web 服务(因此根本就存在 Django),并且发现它的延迟足够低,可以满足他们的目的。所以从某种意义上说,答案是微不足道的“是”。
要正确回答需要更多的信息和研究, 并不适合 SO 的格式。对于初学者,您需要知道“足够快”有多快(即使如此,您也需要弄清楚由于其他因素(例如网络延迟)会导致多少延迟)。这显然也取决于您的实际实现是什么;如果您的程序所做的只是从数据库中获取记录,那么无论您使用纯 Python 还是 C,代码执行都可能会因数据库和网络延迟而相形见绌。OTOH,如果您要解决任意大的 NP 难计算问题,Python 可能开始看起来不那么有吸引力了。OTOOH,如果您要解决非常棘手的计算问题,Python 可能会大大减少您获得服务所需的时间,
在没有实际的具体知识的情况下,其他用 Python 编写的 Web 服务的存在让我直觉你可能会在 Python 中很好,你应该去做,然后看看是否有任何性能瓶颈可以从中受益耐热。要考虑通常的“过早优化是万恶之源”的路线;在您编写任何代码之前考虑优化还为时过早。只要您的方法永远不够快,这不是很明显,请使用最简单的实现并在以后加快速度。
如果您考虑将尚未编写的代码翻译成 C,您不妨从一开始就用 C 编写 Web 服务。这将使您获得尽可能低的延迟。
据我了解,您无论如何都不想使用 Pyrex。您想使用Cython,因为它是同一事物的更高级版本。
其次,使用 Cython 之类的东西的美妙之处在于,您可以只用 Python 编写代码,如果速度不够快,那么更改也不会很大,无法获得所需的加速。
当您知道有问题时进行优化。