Как реализовать многопоточность и исключения?

Допустим, есть следующий код:

import re

from urllib2 import urlopen

startId = 5700
finalId = 6300

count = 0
totalWins = 0

pattern = "title=\'Fir\-tree defense\. Victories\: ([0-9]{1,2})"

for Id in range(startId, finalId):
    print Id
    try:
        u = urlopen("http://site.com/pl.php?id="+str(Id))
        data = u.read()
        arr = re.findall(pattern, data)
        if (len(arr) != 0):
            count = count + 1
            totalWins = totalWins + int(arr[0])
            print Id, " ", arr[0]
    except:
        Id = Id - 1

    

print "Total players involved: ", count
print "Total wins: ", totalWins

u.close()


Будет ли он заново загружать страницу, если она в первый раз не загрузилась?

Как сделать многопоточность для этой программы?
  • Вопрос задан
  • 3026 просмотров
Пригласить эксперта
Ответы на вопрос 3
Используйте Grab. Он более функционален и в настройках можно указать сколько раз пробовать открыть сайт при разных ошибках.
С многопоточностью справляется на ура.
Ответ написан
Комментировать
Wertz
@Wertz Автор вопроса
А как решать эту проблему без помощи сторонней библиотеки?
Ответ написан
dizballanze
@dizballanze
Software developer at Yandex
Если вы хотите повторять действие, до тех пор, пока оно не выполнится без генерации исключения, то нужно дополнительный вложенный цикл запускать. В нем делать break по else у конструкции try. + тут можно легко сделать ограниченное количество попыток.

p.s. перехват исключений без указания типа исключения - очень плохая практика
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы