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?

Était-ce utile?

La solution

Essayez de fermer également votre objet de réponse.

Autres conseils

delthe objet manuellement, notez que cette volonté pas supprimer l'objet mais juste décrémenter le reference count de l'objet. Lorsque les reference countof 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top