【发布时间】:2014-07-29 21:45:18
【问题描述】:
考虑一个函数f(*x),它接受很多参数*x。基于这些参数(对象),函数f 组成一个相当复杂的对象o 并返回它。 o 实现了__call__,所以o 本身就是一个函数。由于o 的组合非常耗时,而且在我的场景中,基于相同的参数*x 拥有多个o 实例是没有意义的,它们将被缓存。
现在的问题是:如何有效地计算基于多个参数*x 的哈希?目前我正在使用 python 字典,我连接每个 x 的 str() 表示来构建每个键。它适用于我的场景,但感觉相当尴尬。我需要以非常高的频率调用生成的对象o,所以我怀疑重复调用str() 和字符串连接会浪费大量计算时间。
【问题讨论】:
-
*x中的参数有哪些类型? -
就我而言,参数有多种类型。我通常有整数元组、一些浮点数和至少一个来自另一个库的上下文对象的 str() 表示。
-
那么我建议简单地在各个参数上调用
hash(),以便使用 Python 在内部使用的相同哈希值来比较字典键。
标签: python caching hash hashmap