[英]Python Unique Method Identifier
我正在尝试缓存python方法的输出,因此对于缓存键,我使用的是hash(method)+序列化的args。 我正在将一台Memcached服务器用于多台工作机。
问题是,在这些辅助机器和进程之间哈希(方法)被证明是不一致的。
class Foo(object):
def bar():
pass
x = Foo()
hash(x.bar) #was inconsistent across machines/processes
id()将不起作用,因为那是一个内存位置,因此只能在一台计算机上使用。
谢谢!
我会改用函数的名称,例如x.foo.__name__
。
设置名称处理函数,该函数将使用类名和方法名来创建字符串,然后使用该字符串的哈希值。 例如,令x为方法
def method_hash(x):
return hash("{0}.{1}".format(x.__objclass__.__name__, x.__name__))
假定该方法来自类而不是特定对象。 如果来自对象,则可以使用x.__self__.__name__
代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.