2

我正在使用脚本来测试网站是否运行顺畅,基本上我每 20 分钟左右打开一次网站并检查响应时间等。像这样:

while True:

    MechBrowser = mechanize.Browser()
    Response = MechBrowser.open("http://example.com")
    time.sleep(1000)

我知道 python 会自己进行垃圾收集,我们真的不应该打扰,但是当我检查网络监视器时,我总是发现几个未关闭的连接每个运行 1 小时或更长时间。并不是所有打开的连接都会挂在那里,只是其中一些。我很困惑,或者也许有一种方法可以手动销毁这些实例?

4

3 回答 3

10

尝试关闭您的响应对象。

于 2010-12-30T11:28:43.893 回答
6

del手动对象,注意这不会删除对象,只会减少reference count对象的 。当reference count一个对象到达zero垃圾收集器时,将其从内存中删除。

于 2010-12-30T11:24:39.383 回答
0

您还可以使用多处理来确保在检查后关闭所有使用的资源:

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)
于 2010-12-30T14:44:39.443 回答