繁体   English   中英

Python唯一方法标识符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM