以下代码的目标仅仅是用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/

10-13 02:15