[基本上,如何使第二个有效。用例是包装函数并捕获异常/添加时间等。
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
不同