Python-multiprocessing - How, um Speicher freizugeben, wenn ein Prozess fertig ist?

Stieß ich auf ein seltsames problem während der Verwendung von python-multiprocessing-Bibliothek.

Mein code ist unten skizziert: ich spawn ein Prozess für jeden "- symbol, Datum" Tupel. Ich kombinieren Sie die Ergebnisse danach.

Ich erwarte, dass, wenn ein Prozess getan hat-computing für einen "- symbol, Datum" Tupel, sollte seine Speicher? anscheinend ist das nicht der Fall. Sehe ich Dutzende Prozesse (obwohl ich den Prozess-pool zu haben die Größe 7), die suspended1 in der Maschine. Sie verbrauchen keine CPU, und Sie nicht den Speicher freizugeben.

Wie kann ich einen Prozess release sein Gedächtnis, nachdem er getan hat, seine Berechnung?

Dank!

1 von "aufgehängt", ich meine, Ihrer Stellung in der ps-Befehl wird angezeigt als "S+"

def do_one_symbol( symbol, all_date_strings ):
    pool = Pool(processes=7)
    results = [];
    for date in all_date_strings:
        res = pool.apply_async(work, [symbol, date])
        results.append(res);

    gg = mm = ss = 0;
    for res in results:
        g, m, s = res.get()
        gg += g; 
        mm += m; 
        ss += s;
InformationsquelleAutor CodeNoob | 2011-10-04
Schreibe einen Kommentar