Ich bin die erste Antwort auf diese Frage mitFreier Speicher in Essig eingelegte Methoden für Multiprocessing
Overcoming Python's limitations regarding instance methods
in der Lage sein Multi-Prozess-Modul über die Methoden eines meiner eigenen Klassen zu verwenden.
Als Beispiel lassen Sie uns sagen, dass ich habe folgendes:
from multiprocessing import Pool
def myParallelFunc(my_list, a, b, inst):
# do something
return True
def myFunc:
# instantiate custom class
my_instance = MyObject()
pool = Pool()
pool.map(functools.partial(myParallelFunc, a=5, b=7, inst=my_instance), my_list)
# SOLUTION!!!
pool.close()
Jetzt habe ich ein anderes Programm, das die Anrufe 100 mal myFunc lassen sagen. Jedes Mal, wenn ich myFunc anrufe, ist etwas Speicher belegt und wird nie freigegeben. Gibt es eine Möglichkeit, es explizit zu befreien?
Woher weißt du es nie freigegeben wird? Python-Speicherverwaltung sollte die Dinge für Sie erledigen. – Pierce
Ich überwache es mit "top" und es wird erst am Ende freigegeben, wenn das Programm beendet wird –