pandas gelten multiprocessing

Ich versuche, multiprocessing mit pandas dataframe, ist split der dataframe zu 8 Teile. wendet eine Funktion auf jedes Teil mit apply (mit jedem Teil verarbeitet in verschiedenen Verfahren).

BEARBEITEN:
Hier ist die Lösung, die ich schließlich gefunden:

import multiprocessing as mp
import pandas.util.testing as pdt

def process_apply(x):
    # do some stuff to data here

def process(df):
    res = df.apply(process_apply, axis=1)
    return res

if __name__ == '__main__':
    p = mp.Pool(processes=8)
    split_dfs = np.array_split(big_df,8)
    pool_results = p.map(aoi_proc, split_dfs)
    p.close()
    p.join()

    # merging parts processed by different processes
    parts = pd.concat(pool_results, axis=0)

    # merging newly calculated parts to big_df
    big_df = pd.concat([big_df, parts], axis=1)

    # checking if the dfs were merged correctly
    pdt.assert_series_equal(parts['id'], big_df['id'])
  • es ist ein Raum in der res = df.apply(process apply, axis=1), ist das richtig?
  • was Sie genau zu erreichen versucht, indem dieser code?
  • derzeit gelten nur gesättigte Fettsäuren einen Kern der CPU. Ich will Multiprozess-und nutzen alle Kerne zu verringern Bearbeitungszeit
  • danke für den Hinweis, aber das ist nur ein Tippfehler im post
  • Es wäre schöner, wenn man die Frage allein und setzen Sie dann die Antworten in den Antworten. So können wir sehen, mehr von dem Prozess, ohne Blick auf das changelog.
  • sollte "aoi_proc" sein "Prozess"? Vielleicht ist die Umbenennung der "Prozess" - Funktion, um einfach "f" wäre besser lesbar in der multiprocessing-Kontext

InformationsquelleAutor yemu | 2014-11-06
Schreibe einen Kommentar