Python 如何修复或重新组织此多处理模式以避免酸洗错误?

Python 如何修复或重新组织此多处理模式以避免酸洗错误?,python,pickle,concurrent.futures,Python,Pickle,Concurrent.futures,另一个酸洗问题。。。以下情况会导致酸洗错误。我认为这和范围界定或其他有关。我还不确定 目标是拥有一个接受参数并用方法丰富函数的装饰器。如果最好的方法是显式地构造类,那么这很好,但这意味着对编写“内容”的用户隐藏内容 错误是: _pickle.PicklingError: Can't pickle <function f at 0x7fe37da121e0>: it's not the same object as __main__.f \u pickle.PicklingError

另一个酸洗问题。。。以下情况会导致酸洗错误。我认为这和范围界定或其他有关。我还不确定

目标是拥有一个接受参数并用方法丰富函数的装饰器。如果最好的方法是显式地构造类,那么这很好,但这意味着对编写“内容”的用户隐藏内容

错误是:

_pickle.PicklingError: Can't pickle <function f at 0x7fe37da121e0>: it's not the same object as __main__.f
\u pickle.PicklingError:无法pickle:它与\uuuu main\uuuu.f不同

我最后做了这样的事情:

def dill_wrapped(dilled, *args, **kwargs):
    fun = dill.loads(dilled)
    return wrapped(fun, *args, **kwargs)

您可能应该尽量避免这种需要,但有时在装饰函数时确实需要这样做。

我认为要么需要重构,以便在顶级scopr静态定义函数,要么使用dill转储函数并远程加载dill.loads。
def dill_wrapped(dilled, *args, **kwargs):
    fun = dill.loads(dilled)
    return wrapped(fun, *args, **kwargs)