Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управление памятью при работе с потоками 
:(
    Опции темы
Ghost2008
Дата 29.11.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Написал небольшой скрипт, который ищет открытые директории в корне сайта:

Код

class CheckingThread ( threading.Thread ):
    def __init__ ( self, length ):
        # length - the length of the strings being checked
        threading.Thread.__init__ ( self )
        self.length = length
        
    def run ( self ):
        ml = ('abcdefghijklmnopqrstuvwxyz')
        stra = ""
        self.genstr(stra, 0, self.length, ml, 0, self.isdir)

    def isdir( self, patha ):
        global fileh
        path = "http://www.site.com/" + patha + "/"

        site = urlopen(path).read()
        
        if(site.startswith("<!DOCTYPE HTML PUBLIC \"-//W")):
            print path + "\t\t => Exists"
            fileh.write(path + "\n")
        else:
            print path + "\t\t => -"

    def genstr( self, stra, k, n, a, count, fun ):
        # Generates all possible strings of n length out of the given 
        # list of symbols (a) and passes each of them to function fun
        #print a
        if(k<n):
            for i in a:
                if(len(stra) == k):
                    stra += i
                else:
                    stra = stra[:-1] + i
                count = self.genstr(stra, k+1, n, a, count, fun)
            return count
        else:
            fun(stra)
            return count + 1
    
fileh = open("ahaha.txt", 'w')

for x in xrange ( 13 ):
    z = x + 3
    CheckingThread ( z ).start()
fileh.close()


Вроде бы все должно быть нормально: запускаются 13 потоков, каждый из которых параллельно выполняет проверку всех возможных вариантов имен директорий. Но через некоторое время скрипт выпадает с ошибкой Memory Error Exception. Насколько я понимаю, не хватает памяти.

Проверка сделана не очень продуманно, так как скрипт заточен под конкретный сайт.

Вопрос - почему так происходит и как с этим бороться?
PM MAIL ICQ   Вверх
Ch0bits
Дата 8.12.2009, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: нет
Всего: 62



Может стоит добавить критическую секцию в места обращения к файлу "ahaha.txt"?  smile

Добавлено через 4 минуты и 55 секунд
Код

site = urlopen(path).read()

Не обработана ошибка чтения.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0394 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.