【问题标题】:unpickling HasTraits object: how to prevent assignment of certain traitsunpickling HasTraits 对象:如何防止分配某些特征
【发布时间】:2013-08-19 18:25:56
【问题描述】:

我有一个使用 cPickle 从磁盘写入和读取的 HasTraits 对象。该对象具有特定的特征,即 assign 的计算成本很高。从traits documentation ,我了解到,当从磁盘读取对象时,所有特征都被重新分配

我想防止在从磁盘读取对象时重新分配昂贵的特征。这可能吗?

【问题讨论】:

  • 只是提示,你应该使用cPickle,它的读写速度可以提高1000倍
  • 我不确定这是相关还是会起作用,但也许腌制您分配特征的对象?
  • @VaibhavAggarwal ,我正在使用 cPickle,我已经编辑了帖子以反映这一点。我不明白你的第二条评论。
  • 你说分配 trait 代价高昂,你不能腌制分配的对象吗?我不知道它是否相关或我是否理解您的问题。
  • @VaibhavAggarwal ,也许我的问题不清楚。我正在腌制一个 HasTraits 对象。问题是当我取消腌制它时,所有特征都会自动分配,这在计算上很昂贵。

标签: python pickle traits enthought


【解决方案1】:

按照此处所述使此特征瞬态: http://docs.enthought.com/traits/traits_user_manual/advanced.html#persistence (顺便说一句,请注意,这是一个比您链接到的文档版本稍新的版本,尽管此部分在两个版本中都有。)

【讨论】:

  • 问题是我希望 trait 具有正确的值,但我不想让整个 depends_on 链响应发生。也许这是不可能的,我对 Pickle 没有详细的了解。我不想/不需要重新分配昂贵的特征的原因是,如果它在腌制时具有价值,那么depend_on 昂贵特征的所有特征都已经做出了相应的反应。
  • 我认为这需要另一个与transient 略有不同的特征属性。也许 psuedo-transient 的特征在解开时会跳过 Notification 步骤 (code.enthought.com/projects/traits)。
猜你喜欢
  • 2018-07-19
  • 2014-05-06
  • 2019-08-07
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多