【发布时间】:2019-07-09 08:01:24
【问题描述】:
我需要一些帮助,开始在 python 中运行一些并行代码。我不认为对于我的问题我可以共享可执行代码,但您仍然可以帮助我从概念上解决我的问题。
我编写了一个函数,该函数将 panda 数据框行作为输入。 该函数进行一些 x 计算,并从具有不同列名作为输入的 panda 数据框中再次返回一行。
到目前为止,我一直在 for 循环中使用它来获取行作为输入,并且在函数返回之后,我将其输出附加到新的数据帧
new_df=pd.DataFrame(columns=['1','2','unique','occurence','timediff','ueid'], dtype='float')
for i in range(0,small_pd.shape[0]): #small_pd the input of the dataframe
new_df=new_df.append(SequencesExtractTime(small_pd.loc[i]))
现在我有一个问题,我想并行运行此代码。我找到了多处理包。
from joblib import Parallel, delayed
import multiprocessing
num_cores = multiprocessing.cpu_count()
results = Parallel(n_jobs=num_cores)(SequencesExtractTime(small_pd.loc)(i) for i in range(0,small_pd.shape[0]))
但不幸的是,这不会执行,因为我不知道如何声明输入是此数据帧的单独行。
您能帮我了解如何在 python 中实现这种并行化吗?输入是数据框的行,输出是需要合并在一起的数据框的行。
非常感谢
问候
亚历克斯
【问题讨论】:
-
为什么选择多处理?你在用 SequencesExtractTime 做什么,small_pd 中有什么?如果您可以分享这些信息,也许除了多处理之外还有其他方法可以解决您的问题?
标签: python pandas dataframe parallel-processing