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

2024-09-24 22:49:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

while True:

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

我知道python本身会进行垃圾收集,我们真的不必费心,但是当我检查network monitor时,总会发现有几个未关闭的连接,每个连接运行1小时或更长时间。并不是所有打开的连接都会挂在那里,只是其中一些。我很困惑,或者也许有办法手动销毁这些实例?


Tags: browser脚本comtruehttptime网站example
3条回答

同时尝试关闭响应对象。

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

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)

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

相关问题 更多 >