为什么不能在python多重处理中腌制方法?

时间:2019-03-19 12:12:44

标签: python multiprocessing pickle python-multiprocessing

我是所有多处理设备的新手,我当前的程序无法正常工作。我阅读了有关问题的最后几个小时,并且尝试了很多,该方法在班级内或班级外以及在另一个班级内都没有用。

import multiprocessing as mp

class A:
    @staticmethod
    def multi():
        a = [1,2,3]
        b = 4
        prepared = list()
        for x in a:
            prepared.append((x, b))
        pool = mp.Pool(mp.cpu_count()-1)
        result = pool.starmap(method, prepared)
        pool.close()
        pool.join()
        print(result)


def method(a, x):
    return (a-x, a+x)


if __name__ == "__main__":
    a = A()
    a.multi()

这只是我的类/方法结构外观的一个示例(即使我在多处理部分中没有进行任何更改,它也可以工作)。

这是我得到的例外:

AttributeError: Can't pickle local object 'FeatureExtracter.<locals>.feature_extracter_fwd'

如果有人知道解决方案,或者至少为什么不能腌制该方法,那就太好了。

1 个答案:

答案 0 :(得分:0)

df['Group'] = df.groupby(['gw_mac', 'mac']).cumcount()

dfs = dict(tuple(df.groupby('Group')))