我正在尝试使某些具有全局依赖性的函数(类似于此问题:How to pickle a python function with its dependencies?)腌制。
这就是我所拥有的:
import cloud, pickle
# define function to multiply some numbers
N = 2
def multiply_number(x):
return x*N
# rename function and pickle
multiply_number.__name__ = "double_number"
fn = cloud.serialization.cloudpickle.dumps(multiply_number)
del multiply_number
del N
loaded = cloud.serialization.cloudpickle.loads(fn)
loaded(5) # returns 10
loaded.__globals__['N'] # returns 2
loaded.__name__ ## returns multiply_number ..
我相信loaded.__name__
返回multiply_number
是因为co_name
属性是只读的,尽管我尝试将函数的新名称分配为double_number
,但这在某种程度上不会不能在泡菜中坚持。
是否有任何方法可以在已加载的泡菜中的任何位置访问“新分配的”名称double_number
?