几种类方法的python并行执行

几种类方法的python并行执行,python,parallel-processing,multiprocessing,Python,Parallel Processing,Multiprocessing,我创建了几个自定义类来转换数据帧,如下所示(简化版本): 我现在要做的是并行执行这两个类方法。 我想应该是这样的: import multiprocessing df1 = class1(a) pr1 = multiprocessing.Process(target=df1.transform) df2 = class2(b) pr1 = multiprocessing.Process(target=df2.transform, kwargs={'arg0' : x}) pr1.start()

我创建了几个自定义类来转换数据帧,如下所示(简化版本):

我现在要做的是并行执行这两个类方法。 我想应该是这样的:

import multiprocessing

df1 = class1(a)
pr1 = multiprocessing.Process(target=df1.transform)
df2 = class2(b)
pr1 = multiprocessing.Process(target=df2.transform, kwargs={'arg0' : x})
pr1.start()
pr2.start()
pr1.join()
pr2.join()
但是,在我执行这段代码之后

print df1.dataframe
print df2.dataframe
我观察到,根本没有进行任何转换。(尽管根据计算时间,调用pr1.start()和pr2.start()时确实发生了一些事情)

有人知道原因是什么吗?解决办法是什么

非常感谢:)


p.s下一步将是“合并df1.dataframe和df2.dataframe”。所以我也想知道我是否需要另一个函数fun\u等待\u直到\u all\u process\u finished(),然后执行pd.merge((df1.dataframe,df2.dataframe))

在我看来,使用模块是解决这个问题的最佳方法

为便于使用,您可以使用:

定义后,将装饰器添加到要线程化的函数/类方法中,如下所示:

@threaded
def transform(self):
  self.dataframe = (some dataframe computations)
  return self.dataframe
然后只需调用函数,就会自动创建一个线程:

c1 = class1(a)
c2 = class2(b)

c1.transform()
c2.transform()

在我看来,使用模块是解决这个问题的最佳方法

为便于使用,您可以使用:

定义后,将装饰器添加到要线程化的函数/类方法中,如下所示:

@threaded
def transform(self):
  self.dataframe = (some dataframe computations)
  return self.dataframe
然后只需调用函数,就会自动创建一个线程:

c1 = class1(a)
c2 = class2(b)

c1.transform()
c2.transform()