Comment puis-je supprimer une instance d'une classe en Python (par la force)?
-
14-10-2019 - |
Question
J'utilise toutes les 20 minutes environ et vérifier le temps de réponse d'un script pour tester si un site Web fonctionne bien, au fond, j'ouvre le site et ainsi de suite. Comme ceci:
while True:
MechBrowser = mechanize.Browser()
Response = MechBrowser.open("http://example.com")
time.sleep(1000)
Je sais que python fera la collecte des ordures lui-même et nous devrions vraiment pas la peine, mais quand je vérifie moniteur de réseau je trouve toujours plusieurs connexion 1h ou chaque unclosed plus en cours d'exécution. Et pas tous la connexion ouverte serait y accrocher, quelques-uns d'entre eux. Je suis confus, ou peut-être il y a une méthode pour détruire ces instances manuellement?
La solution
Essayez de fermer également votre objet de réponse.
Autres conseils
del
the objet manuellement, notez que cette volonté pas supprimer l'objet mais juste décrémenter le reference count
de l'objet. Lorsque les reference count
of atteint un objet zero
le garbage collector supprime de la mémoire.
Vous pouvez également utiliser multitraitement pour assurer que toutes les ressources utilisées sont fermés après vérification:
from multiprocessing import Process
import time
import urllib2
def check_url(url):
try:
f = urllib2.urlopen(url)
f.close()
print "%s working fine" % url
except Exception as exc:
print "Error ", exc
if __name__ == '__main__':
while True:
p = Process(target=check_url, args=("http://www.google.com", ))
p.start()
p.join()
time.sleep(5)