简单的Python程序卡住了

3
昨天我编写了一个简单的Python程序(非常简单,如下所示),用于验证约5000个URL的HTTP状态响应。问题是,该程序似乎每400至500个URL就会卡住。由于我是新手,不知道如何跟踪问题。
我添加了“a = a + 1”这一部分来跟踪处理了多少个URL时出现问题。
我该如何找到问题所在?非常感谢!
我正在使用Ubuntu 11.10和Python 2.7。
#!/usr/bin/env python 
# -*- coding: utf-8 -*-

import httplib

raw_url_list = open ('url.txt', 'r')
url_list = raw_url_list.readlines()
result_file = open('result.txt', 'w')
a = 0

for url in url_list:
    url = url.strip()[23:]
    conn = httplib.HTTPConnection('www.123456789.cn')
    conn.request('HEAD', url)
    res = conn.getresponse()
    result_file.write('http://www.123456789.cn%s, %s, %s \n' % (url, res.status, res.reason))
    a = a + 1
    print a

raw_url_list.close()
result_file.close()

2
你怎么知道它“卡住了”? - Ignacio Vazquez-Abrams
嗨,伊格纳西奥,我看到终端卡住了,很长时间没有打印数字了。 - BananaOnTheWall
1个回答

3
您需要在完成后关闭连接。只需将此添加到您的for循环的结尾即可。
     conn.close()

谢谢你的帮助!顺便问一下,有没有什么我可以用来自己找出问题的工具,比如程序员常用的方法来确定是哪个罪犯导致程序卡住了? - BananaOnTheWall
@BananaOnTheWall:通常情况下,如果一个程序变慢了,就意味着存在某种内存泄漏问题。如果你监控了程序的内存使用情况,你应该会注意到它开始不断增加。至于工具方面,嗯,除了经验,我不知道有其他特定的方法。 - PearsonArtPhoto
感谢您清晰的解释,您的回答节省了我很多时间,我非常感激 :) - BananaOnTheWall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接