我正在使用脚本来测试网站是否运行顺畅,基本上我每20分钟左右打开一次网站并检查响应时间等等。像这样:
while True:
MechBrowser = mechanize.Browser()
Response = MechBrowser.open("http://example.com")
time.sleep(1000)
我知道python本身会进行垃圾收集,我们真的不应该打扰,但是当我检查网络监视器时,我总会找到几个未关闭的连接,每个连接运行1小时或更长时间。并非所有打开的连接都会挂在那里,只有其中一些。我很困惑,或者有一种方法可以手动销毁这些实例?
答案 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)