j'utilise la première réponse à cette questionmémoire pour multitraitement méthodes marinées
Overcoming Python's limitations regarding instance methods
pour pouvoir utiliser le module multiprocessus sur les méthodes d'un de mes propres classes.
À titre d'exemple, disons que je donne les résultats suivants:
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()
Maintenant, j'ai un autre programme qui appelle myFunc disons 100 fois. Chaque fois que j'appelle myFunc, la mémoire est occupée et jamais libérée. Existe-t-il un moyen de le libérer explicitement?
Comment savez-vous qu'il n'a jamais libéré? La gestion de la mémoire Python devrait prendre soin des choses pour vous. – Pierce
Je le surveille avec "top" et il n'est publié qu'à la fin, quand le programme se termine –