具有多处理功能的熊猫数据帧上的并行操作-我做错了什么?

时间:2019-03-20 00:20:58

标签: python pandas python-multiprocessing

我正在尝试找到一种方法来并行化数据帧上的某些操作,尤其是那些无法向量化的操作。 我已经测试了以下来自http://www.racketracer.com/2016/07/06/pandas-in-parallel/的代码,但是它不起作用。没有错误消息-很简单,什么也没有发生。对其进行调试,似乎代码卡在了df = pd.concat(pool.map(func, df_split))上,但是没有任何错误消息。

我在做什么错?

import timeit
import pandas as pd
import numpy as np
import seaborn as sns
import multiprocessing
from multiprocessing import Pool

def parallelize_dataframe(df, func):
    df_split = np.array_split(df, num_partitions)
    pool = Pool(num_cores)
    df = pd.concat(pool.map(func, df_split))
    pool.close()
    pool.join()
    return df

def multiply_columns(data):
    data['length_of_word'] = data['species'].apply(lambda x: len(x))
    return data

num_partitions = 2 #number of partitions to split dataframe
num_cores = 2# multiprocessing.cpu_count() #number of cores on your machine

iris = pd.DataFrame(sns.load_dataset('iris'))
iris = parallelize_dataframe(iris, multiply_columns)

1 个答案:

答案 0 :(得分:0)

我需要添加

if __name__ == "__main__":