J'essaie de limiter l'utilisation de la RAM d'un programme Python à la moitié de sorte qu'il ne se fige pas complètement lorsque toute la RAM est utilisée, pour cela j'utilise le code suivant qui n'est pas travail et mon ordinateur portable est en gelant:Limiter l'utilisation de la RAM au programme python
import sys
import resource
def memory_limit():
rsrc = resource.RLIMIT_DATA
soft, hard = resource.getrlimit(rsrc)
soft /= 2
resource.setrlimit(rsrc, (soft, hard))
if __name__ == '__main__':
memory_limit() # Limitates maximun memory usage to half
try:
main()
except MemoryError:
sys.stderr.write('MAXIMUM MEMORY EXCEEDED')
sys.exit(-1)
J'utilise d'autres fonctions que j'appelle de la fonction main
.
Qu'est-ce que je fais mal?
Merci d'avance.
PD: Je l'ai déjà recherché à ce sujet et a trouvé le code que je l'ai mis, mais il ne fonctionne toujours pas ...
Peut-être que vous voulez 'ulimit' ou' prlimit' en dehors du script Python. Ou configurez une mémoire limitée 'cgroup' et exécutez le script ici. Je ne suis pas sûr d'essayer d'auto-limiter est la meilleure idée - ce qui se passe si le code qui essaie de vérifier ou de faire respecter la limite doit allouer de la mémoire dans le processus? – twalberg
Avez-vous essayé 'soft/= 100', ou soft // = 2? – Gribouillis
si j'utilise que ça dit sorties trop tôt @Gribouillis –