Problem, dass selbst wenn Pool.close () mit der Mehrfachverarbeitung von Python ausgeführt wird, der Prozess angehalten bleibt und der Speicher stetig zunimmt.

bitte sag mir

Was Sie lösen wollen

Wenn Sie dem folgenden Hauptargument ein geeignetes Argument geben und es ausführen, erhöht sich die Anzahl der Prozesse und der Speicher wird knapp, daher möchte ich dies verhindern.

import multiprocessing

def score4abc(a,b):
  score = a,b
  return score

def wrapper_score4multi(args):
  return score4abc(*args)

def main(a,foo):
	for i in range(500):
		pool = multiprocessing.Pool(32)
		pool.map(wrapper_score4multi,[[a,b] for b in foo]#32 Prozesse befinden sich immer im R-Zustand und abgeschlossene Prozesse bleiben im S-Zustand.
		pool.close()

Ich wünschte, ich könnte so etwas tun

Einfach ausgedrückt fühlt es sich ziemlich gut an, die verbleibenden Prozesse mit einer Klebemethode wie pool.kill () abbrechen zu können.

Zusatzinformationen

Als ich es mit ps aux überprüfte, blieb der Prozess, der während der Ausführung des folgenden Codes parallel verarbeitet wurde, lange Zeit ausgesetzt, sodass ich vermutete, dass dies die Ursache war. Laut dem offiziellen Dokument heißt es, dass es mit Pool.terminate () stoppt und mit Pool.close () endet, aber auch nach Pool.close () perfekt bleibt. Ich habe die Details vergessen, aber ich kann Process nicht verwenden, um mehrere Argumente an die Funktion zu übergeben, die ich parallel verarbeiten möchte, und ich denke, es war schwierig, ohne pool.map zu verwenden, wie unten gezeigt. Wenn Sie den Prozess identifizieren und jede Minute in der Shell beenden, wird sich die Anzahl der Prozesse im Laufe der Zeit schnell erholen (zu niedrige Schicht, um die Ursache selbst zu identifizieren). Das Obige wird von Cython kompiliert und ausgeführt. Die Python-Version des Hauptaufrufers oben ist 2.7.3.

Recommended Posts

Problem, dass selbst wenn Pool.close () mit der Mehrfachverarbeitung von Python ausgeführt wird, der Prozess angehalten bleibt und der Speicher stetig zunimmt.
Das Problem, das mir Schokolade gibt, tritt nicht auf, selbst wenn die Korrespondenzanalyse mit der COTOHA-API durchgeführt wird
Beachten Sie, dass der Prozess auch nach dem Abmelden bei SSH bestehen bleibt
So gehen Sie mit dem Problem um, dass das aktuelle Verzeichnis verschoben wird, wenn Python von Atom ausgeführt wird
Lösen Sie das Python-Rucksackproblem mit der Branch-and-Bound-Methode