2012-03-10 82 views
3

昨天我寫了一個簡單的Python程序(非常簡單,如下所示)來驗證大約5000個URL的HTTP狀態響應。事情是,程序似乎陷入了每400至500個URL的卡住。由於我對編程真的很陌生,我不知道如何跟蹤這個問題。簡單的Python程序被卡住了

我添加了「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

你怎麼知道它「卡住」了? – 2012-03-10 05:01:29

+0

嗨伊格納西奧,我看到終端卡住了很長一段時間,並停止打印數字。 – BananaOnTheWall 2012-03-10 05:05:48

回答

3

您需要在完成後關閉您的連接

。只需將其添加到for循環的結尾即可。

 conn.close() 
+0

謝謝你的幫助!順便說一句,有什麼我可以用來自己發現問題的,就像程序員找出造成程序卡住的罪魁禍首的常見方法一樣? – BananaOnTheWall 2012-03-10 05:10:04

+0

@BananaOnTheWall:通常如果一個程序變慢,它意味着某種內存泄漏。如果你監視了程序的內存使用情況,你會注意到它開始上升。但至於工具,呃,除了經驗之外,我不知道每種說法。 – PearsonArtPhoto 2012-03-10 05:14:33

+0

謝謝你的明確解釋,你的回答爲我節省了很多時間,我欣賞它:) – BananaOnTheWall 2012-03-10 05:20:00