- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的 UserProfile 对象上有几个包含 JSON 对象的 TextField 列。我还为每一列定义了一个 setter/getter 属性,它封装了将 JSON 序列化和反序列化为 python 数据结构的逻辑。
此数据的性质确保它会在单个请求中被 View 和模板逻辑多次访问。为了节省反序列化成本,我想在读取时记住 python 数据结构,在直接写入属性时失效或从模型对象保存信号。
我在哪里/如何存储备忘录?我对使用实例变量感到紧张,因为我不了解查询实例化任何特定 UserProfile 背后的魔力。 __init__
使用安全吗?还是我需要在每次读取时通过 hasattr()
检查 memo 属性是否存在?
这是我当前实现的一个示例:
class UserProfile(Model):
text_json = models.TextField(default=text_defaults)
@property
def text(self):
if not hasattr(self, "text_memo"):
self.text_memo = None
self.text_memo = self.text_memo or simplejson.loads(self.text_json)
return self.text_memo
@text.setter
def text(self, value=None):
self.text_memo = None
self.text_json = simplejson.dumps(value)
最佳答案
您可能对内置的 django 装饰器 django.utils.functional.memoize
感兴趣。
Django 使用它来缓存昂贵的操作,如 url 解析。
关于python - 如何内存 Django 模型对象的昂贵计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1526191/
我正在阅读 MongoDB,并试图了解它的最佳用途。我没有看到明确答案的一个问题是哪些操作便宜或昂贵,以及在什么条件下。 你能帮忙澄清一下吗? 谢谢。 最佳答案 人们经常声称 mongodb 的写入速
我正在寻找一个主要来源(或一个非常好的解释)来支持在为 iPhone 编写软件时使用 autorelease 是危险的或过于昂贵的说法。 许多开发者都提出了这种说法,我什至听说 Apple 不推荐它,
我意识到这离微优化领域太远了,但我很想知道为什么调用 DateTime.Now 和 DateTime.UtcNow 如此“昂贵”。我有一个示例程序,它运行几个场景来做一些“工作”(添加到一个计数器)并
我是一名优秀的程序员,十分优秀!