Python 首次多处理,无法正常运行
这是我的密码:Python 首次多处理,无法正常运行,python,pandas,multiprocessing,Python,Pandas,Multiprocessing,这是我的密码: def feature(x): times = [] for j in array: pat = x[x.id == j] min_dates_j = pat.groupby(["event_description"]).min() try: time = ((min_dates_j.loc["test1","event_description"] - min_dates_j.loc["t
def feature(x):
times = []
for j in array:
pat = x[x.id == j]
min_dates_j = pat.groupby(["event_description"]).min()
try:
time = ((min_dates_j.loc["test1","event_description"] - min_dates_j.loc["test2","event_description"]).days)
except:
time = np.NaN()
times.append(time)
return times
from multiprocessing import Pool
p = Pool(10)
times = p.map(feature, df)
feature_df["A"] = times
这段代码需要很长时间才能运行,所以我尝试使用多处理来加快编译时间。任何帮助都将不胜感激
我已经看过了池
函数,我不太明白为什么它不能提高性能
编辑:
我想提到的是,我的数据集包含20494463行,我的系统有16个CPU
p = Pool(16)
times = p.map(feature, np.array_split(df,150))
它是否正在运行并给出正确的结果?它甚至还没有完全编译。该代码在较小的示例集上工作,不是编译吗?我想你不是这个意思。你能用一个小集合测试它,看看多重处理是否有效,并给出正确的结果吗?另外,我很确定这会在函数中抛出
namererror
和array
。。。另外,如果df
是一个pd.DataFrame
,那么map
将迭代列名。事实上,您编写函数的方式,我不确定您是否可以使用map
…嗯,您还有其他建议吗?很抱歉,这是全新的meIs,它正在运行并为您提供正确的结果?它甚至还没有完全编译。该代码在较小的示例集上工作,不是编译吗?我想你不是这个意思。你能用一个小集合测试它,看看多重处理是否有效,并给出正确的结果吗?另外,我很确定这会在函数中抛出namererror
和array
。。。另外,如果df
是一个pd.DataFrame
,那么map
将迭代列名。事实上,您编写函数的方式,我不确定您是否可以使用map
…嗯,您还有其他建议吗?对不起,这对我来说是全新的