Я пытаюсь обработать данные нескольких субъектов в одном кадре данных. Существует> 30 субъектов и 14 вычислений на субъект, это большой набор данных, но больше 5 взрывает память на узле планировщика без запуска каких-либо рабочих процессов на том же узле, что и планировщик, у него 128 ГБ памяти? Любые идеи, как я могу обойти это или если я делаю что-то не так? код ниже.
def channel_select(chn,sub):
subject = pd.DataFrame(df.loc[df['sub'] == sub])
subject['s0'] = subject[chn]
val = []
for x in range(13):
for i in range(len(subject)):
val.append(subject['s0'].values[i-x])
name = 's' + str(x+1)
subject[name] = val
val = []
return subject
subs = df['sub'].unique()
subs = np.delete(subs, [34,33])
for s in subs:
for c in chn:
chn_del.append(delayed(channel_select)(c,subs[s]))
results = e.persist(pred)
У меня есть показанный код для запуска всех предметов, но более 5 за раз, и мне не хватает памяти.
df
здесь и откудаpred
? Я отмечаю, чтоdf
должен быть глобальным, включенным в закрытие функции, и что ваш код очень зацикленный, так что его, вероятно, можно переписать с помощью лучших методов pandas. - person mdurant   schedule 14.07.2017e.scatter(df)
и передатьdf
в сигнатуре функции, чтобы не копировать ее непосредственно в графе X раз. - person mdurant   schedule 15.07.2017