我正在访问一个非常大的Pandas数据框作为全局变量。这个变量通过joblib并行访问。
例如。
df = db.query("select id, a_lot_of_data from table")
def process(id):
temp_df = df.loc[id]
temp_df.apply(another_function)
Parallel(n_jobs=8)(delayed(process)(id) for id in df['id'].to_list())
以这种方式访问原始df似乎会在进程之间复制数据。这是意外的,因为原始df在任何子进程中都没有被改变?(还是有改变吗?)
max_nbytes
调用Parallel
。请参见joblib网站。还可以参见此答案。当然,您可以使用NumPy数组代替Pandas,这可能会加快速度。 - Kevin S