如何创建可在python中选择的动态修饰(包装)函数?

问题描述 投票:0回答:1

[基本上,如何使第二个有效。用例是包装函数并捕获异常/添加时间等。

import concurrent.futures
import functools
def with_print(func):
    """ Decorate a function to print its arguments.
    """
    @functools.wraps(func)
    def my_func(*args, **kwargs):
        print("LOOK", args, kwargs)
        return func(*args, **kwargs)
    return my_func

def f():
    print('f called')

g = with_print(f)

executor = concurrent.futures.ProcessPoolExecutor(max_workers=10)

tasks = [f for x in range(10)]
fut = list()
for task in tasks:
    fut.append(executor.submit(task))
res = [x.result() for x in fut]
print(res)


# THIS ONE FAILS
tasks = [g for x in range(10)]
fut = list()
for task in tasks:
    fut.append(executor.submit(task))
res = [x.result() for x in fut]
print(res)

错误是:

_ pickle.PicklingError:无法腌制:它与main。f

不同
python pickle concurrent.futures
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.