如何在python中删除类的实例(强制)?

时间:2010-12-30 11:21:36

标签: python mechanize mechanize-python

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

while True:

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

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

3 个答案:

答案 0 :(得分:10)

尝试关闭您的回复对象。

答案 1 :(得分:6)

手动

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

答案 2 :(得分: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)