以下代码的目标仅仅是用0到9填充数组a:
import multiprocessing
import numpy as np
from joblib import Parallel, delayed
num_cores = multiprocessing.cpu_count()
inputs = range(10)
a = np.zeros(10)
def processInput():
def testNested(t):
a[t]= t
Parallel(n_jobs=num_cores, backend="threading")(delayed(testNested)(t) for t in range(0, 10))
processInput()
尝试在函数中调用多进程时出现泡菜错误:
AttributeError: Can't pickle local object 'processInput.<locals>.testNested'
问:如果我必须在其他功能中运行多进程,是否有任何建议实现此目标?
最佳答案
该错误信息非常清楚,无法对嵌套函数进行腌制。 As documented stated,您应该在模块的顶层定义辅助函数。
关于python - 多处理中的 pickle ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48127176/