我最好用下面的示例代码来解释我的问题:while True:
NewThread = threading.Thread(target = CheckSite, args = ("http://example.com", "http://demo.com"))
NewThread.start()
time.sleep(300)
def CheckSite(Url1, Url2):
try:
Response1 = urllib2.urlopen(Url1)
Response2 = urllib2.urlopen(Url2)
del Response1
del Response2
except Exception, reason:
print "How should I delete Response1 and Response2 when exception occurs?"
del Response1
del Response2 #### You can't simply write this as Reponse2 might not even exist if exception shows up running Response1
我写了一个很长的脚本,用来检查不同站点的运行状态(响应时间或类似的东西),就像我在前面的代码中所做的一样,我使用几个线程分别检查不同的站点。正如您在每个线程中看到的,会有几个服务器请求,当然您会时不时地得到403或类似的请求。我总是认为那些被浪费的连接(有异常的连接)会被python中的某种垃圾回收器收集,所以我就不去管它们了。在
但是当我检查我的网络监视器时,我发现那些被浪费的连接仍然在浪费资源。脚本运行的时间越长,浪费的连接就越多。我真的不想每次发送服务器请求时都使用try except子句,这样del response可以在每个except部分中使用来破坏浪费的连接。一定有更好的办法,有人能帮我吗?在