【问题标题】:Will it hurt performance if each view class is moved to a separate .py file?如果将每个视图类移到单独的 .py 文件中,会影响性能吗?
【发布时间】:2022-02-09 18:08:22
【问题描述】:

我有一个 Django 项目,在 views.py 文件中包含大约 100 个基于类的视图(到目前为止)。

现在管理视图变得越来越难。如果我将每个视图放在一个单独的.py 文件中并全部导入views 文件夹__init__.py 中,会不会影响性能?

我关心的是性能,而不是代码风格。 那么基于 DRF 类的视图和序列化器呢?

【问题讨论】:

  • 将视图分组到一个模块(因此通常是一个文件)中更符合 Pythonic。但是,您可以创建不同的视图,每个视图都包含相关视图的集合。但是每个文件一个类更像 Java。
  • @WillemVanOnsem 我关心的是性能,而不是代码风格(pythonic 或 Java)
  • 几乎没有性能差异。如果您有很多文件,那么在 启动 服务器时效率可能会稍低一些,因为它需要获取更多文件。话虽如此,Python 的理念是开发人员的便利性优于机器性能,因此用 Python 制作网络服务器通常不会从 CPU 中获取最新的周期。

标签: python django performance django-rest-framework django-views


【解决方案1】:

这里有两点:

1.对性能有影响吗?

没有,或者只是勉强。此外,将所有这些文件加载​​到内存中可能需要一些额外的时间(因为每个文件都需要打开),因此将这些视图写入单个文件确实可能需要花费一些时间额外的几个周期。 首先,这对于提高性能来说是个坏主意。

但这只会在您启动网络服务器时发生。加载文件后,定义视图的模块并没有太大区别。解释器将简单地调用该函数。

话虽如此,Python 无论如何都不是一种旨在占用绝对大部分 CPU 的语言。在某种程度上,Python 的理念是程序员的便利性高于机器性能。由于 Python 的动态特性,它通常不会产生最快的程序。这个想法是为程序员提供一个方便的环境。通常,如果您需要更多的处理能力,您可以购买额外的服务器,而雇用额外的开发人员通常成本更高。因此,在 Django 中开发网络服务器可能不会获得最快的响应时间,但它可能会使您的工作更容易实现这样的服务器。

  1. Django 的架构

您还应该考虑 Django 的架构。尝试更改此架构是一项糟糕的练习。在此架构中,一切都旨在避免重复(DRY)。如果另一个开发人员打算交付您的项目,他或她将能够在尽可能短的时间内完成它。因此,最好保留此架构并将所有 CBV 放在一个 views.py 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2023-02-03
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    相关资源
    最近更新 更多