Python 3和Django 2更快地加载或复制对象以进行查看?

时间:2019-01-10 14:48:03

标签: python django python-3.x pickle

对于将大型对象放入Django 2的视图的最高效方式,我感到好奇

views.py中,我需要将一个大对象加载到内存中。我已经腌制了这两个文件,还有一个json文件。腌制版本仅是95%版本大小的json的边际改进。

虽然我希望在开始投放时执行一次此操作,然后让一个视图可以访问此module级别变量,但我的视图之一需要进行修改该对象执行应做的事情。因此,如果我将其作为module级变量(这里称为persistent)加载一次,我们会看到顺序调用使用了更新后的变量-如预期的那样:

views.py

...

persistent = {'val': 0} # loaded from pickled / json file
def test(request, val):
    old = persistent['val'] # required information from unmodified object

    persistent['val'] = val # some computation which is required to modify the object
    return JsonResponse({'old': old, 'new': val})
...

urls.py

...
urlpatterns = [
    ...,
    path('test/<val>/', views.test, name='test')
    ,...
]

api调用

localhost:8000/test/10   ---> {'old': 0,    'new': 10}
localhost:8000/test/100  ---> {'old': '10', 'new': 100}

这当然是预期的。但是,对于 my 用例,我需要每个调用来访问原始的persistent未经修改的变量。

因此我想到了两种解决方案:

  1. 在调用视图时读入对象
  2. 在调用视图时复制持久对象

也许有更好的方法来解决这个问题。

我的问题是,通常来说,对于大型且可能是复杂的对象,性能更高的copy.deepcopy或读取泡菜文件是什么?

0 个答案:

没有答案