多重处理无效(不间断的过程)

时间:2018-08-29 07:58:50

标签: python jupyter-notebook python-multiprocessing

由于大数据框(10万行),我尝试使用多处理方法来加快计算速度。但是,此代码将永远在我的Python笔记本中运行,而我根本无法终止。我的CPU(8个处理器)的使用率只有5%。

def func(df):
    df_result = df.apply(lambda row: fill_simulated_data(row, df1_before_last_30days), axis = 1)
    return df_result

def parallelize_dataframe(df, func):
    num_cores = multiprocessing.cpu_count()-1  #leave one free to not freeze machine
    num_partitions = num_cores #number of partitions to split dataframe
    df_split = np.array_split(df, 2)
    pool = multiprocessing.Pool(num_cores)
    df = pd.concat(pool.map(func, df_split))
    pool.close()
    pool.join()
    return df

start = timeit.default_timer()

df1_last_30days_test  = df1_last_30days.iloc[0:1000]

result = parallelize_dataframe(df1_last_30days_test,func)

stop = timeit.default_timer()
print 'Process was done in: ' + str(stop - start) + ' seconds'

如果没有多重处理,那么对于一个小型数据框(100行),我的函数大约需要5.9s的时间。我在这里做什么错了?

0 个答案:

没有答案
相关问题