对于将大型对象放入Django 2的视图的最高效方式,我感到好奇
在views.py
中,我需要将一个大对象加载到内存中。我已经腌制了这两个文件,还有一个json
文件。腌制版本仅是95%
版本大小的json
的边际改进。
虽然我希望在开始投放时执行一次此操作,然后让一个视图可以访问此module
级别变量,但我的视图之一需要进行修改该对象执行应做的事情。因此,如果我将其作为module
级变量(这里称为persistent
)加载一次,我们会看到顺序调用使用了更新后的变量-如预期的那样:
...
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})
...
...
urlpatterns = [
...,
path('test/<val>/', views.test, name='test')
,...
]
localhost:8000/test/10 ---> {'old': 0, 'new': 10}
localhost:8000/test/100 ---> {'old': '10', 'new': 100}
这当然是预期的。但是,对于 my 用例,我需要每个调用来访问原始的persistent
未经修改的变量。
因此我想到了两种解决方案:
也许有更好的方法来解决这个问题。
我的问题是,通常来说,对于大型且可能是复杂的对象,性能更高的copy.deepcopy
或读取泡菜文件是什么?