Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2010 19:48:30

Artos
От:
Зарегистрирован: 2010-10-01
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с производительностью

есть 3000 html страниц и следующий код:

    html_dir   = "%s/organizations" % DATA_HTML_PATH
html_files = os.listdir(html_dir)

for file in html_files:
file = open(html_dir + "/" + file)
content = file.read()

#name = BeautifulSoup(content).find('h1', { 'class': 'oldh1' })
#name = name.string.replace(" ", "")

file.close()
выполняется он очень долго по сравнению даже с php, а если я раскомментирую строки с парсингом имени, то на каждую итерацию приходится чуть ли не по 1 сек. Что я не так делаю?



Офлайн

#2 Окт. 25, 2010 09:55:14

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с производительностью

попробуйте использовать os.walk

import os

html_dir = "%s/organizations" % DATA_HTML_PATH
for root, dirs, files in os.walk(html_dir):
for name in files:
content = open(os.path.join(root, name)).read()
ну и профилировщик вам в помощь, нужно посмотреть где тормозит



Офлайн

#3 Окт. 25, 2010 11:52:50

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Проблема с производительностью

Если важна скорость, то тогда лучше использовать ElementTree.
Кстати, а что вы потом делаете с name?
Зачем вам BeautifulSoup, может быть вообще будет достаточно работы со строками, регулярными выражениями?
Какой размер файлов?



Офлайн

#4 Окт. 25, 2010 11:54:54

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Проблема с производительностью

Ну и напоследок:
http://www.crummy.com/software/BeautifulSoup/documentation.html#Improving Performance by Parsing Only Part of the Document



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version