Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 14, 2012 14:21:09

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

Почему встроенные модули такое УГ?

lorien
Далее я просил вас выложить код, который у вас из обычной страницы делает DOM-дерево одну секунду. Где код?
Обычный
tree = html5lib.parse(file(fname,"rb"), treebuilder='lxml', namespaceHTMLElements=False)
подгружает систему на долю секунды.

lorien
> Выложите свой, раз Вы лучше с грабом знакомы, в чем проблема-то?
Я хочу вам показать наглядную разницу между тредами и асинхронностью. Раз вы так рьяно защищаете треды, то я предлагаю вам честно сравнить два подхода. Когда вы выложите свой код, я выложу асинхронный. Затем сравним результаты.
Выложите асинхронный, я из него сделаю треды. Чем Вас это не устраивает?

П.С. Вы при обращении к одному собеседнику пишется с большой буквы: “Вы”, нет?



Офлайн

#2 Июнь 14, 2012 14:24:27

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Почему встроенные модули такое УГ?

> подгружает систему на долю секунды.
На долю или на секунду? Это как бы разные вещи.

> Выложите асинхронный, я из него сделаю треды. Чем Вас это не устраивает?
Я не хочу чтобы из моего кода что-то делали, я хочу видеть ваше творчество, так сказать. Для вас такая проблема написать самоу нужный код?

Офлайн

#3 Июнь 14, 2012 14:25:06

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Почему встроенные модули такое УГ?

> П.С. Вы при обращении к одному собеседнику пишется с большой буквы: “Вы”, нет?

А вы серебряный пишите с двумя н. БЕ-БЕ-БЕ!

Офлайн

#4 Июнь 14, 2012 14:28:26

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

Почему встроенные модули такое УГ?

lorien
> подгружает систему на долю секунды.
На долю или на секунду? Это как бы разные вещи.
Ощутимо грузит. На несколько десятых имхо, тесты будут потом.

lorien
> Выложите асинхронный, я из него сделаю треды. Чем Вас это не устраивает?
Я не хочу чтобы из моего кода что-то делали, я хочу видеть ваше творчество, так сказать. Для вас такая проблема написать самоу нужный код?
Вы должны граб знать лучше меня. Я может тоже не хочу, чтобы из моего кода что-то делали, что теперь? Дедлок?

lorien
> П.С. Вы при обращении к одному собеседнику пишется с большой буквы: “Вы”, нет?

А вы серебряный пишите с двумя н. БЕ-БЕ-БЕ!
Я хоть один раз написал, а вы с маленькой тут пишут постоянно. Это уже как -тся/-ться

—–
детские картинки будешь постить во флейме или на другому форуме slav0nic



Отредактировано slav0nic (Июнь 14, 2012 14:32:01)

Офлайн

#5 Июнь 14, 2012 14:41:40

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Почему встроенные модули такое УГ?

> Ощутимо грузит. На несколько десятых имхо, тесты будут потом.
Тесты будут сейчас! :)

In : import urllib, html5lib, lxml.html

In : data = urllib.urlopen('http://ixbt.com/').read()

In : len(data)
Out: 82116

In : %time t=lxml.html.fromstring(data);
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.01 s

In : %time t=html5lib.parse(data, treebuilder='lxml', namespaceHTMLElements=False)
CPU times: user 0.94 s, sys: 0.01 s, total: 0.95 s
Wall time: 0.93 s
Выводы сами сделаете?

Вы должны граб знать лучше меня. Я может тоже не хочу, чтобы из моего кода что-то делали, что теперь? Дедлок?
Я и не собираюсь ничего из вашего кода делать. Так что дедлока нет. Вы выше заявили, что хотите мой код использовать, я хочу чтобы вы с нуля написали. Я же заявляю, что не буду использовать ваш код. Так что можете смело выкладывать. Если я не увижу кода, я просто расценю весь топик как мозгоёбство, профанацию и демагогию.

Офлайн

#6 Июнь 14, 2012 14:57:09

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

Почему встроенные модули такое УГ?

lorien
Выводы сами сделаете?
lorien
Wall time: 0.93 s
Сделал. Ваш ход.

asilyator
детские картинки


lorien
. Вы выше заявили, что хотите мой код использовать, я хочу чтобы вы с нуля написали.
Какой код?
Я сказал, что я без доказательств не поверю, что код с тредами до хотя бы 500-600 потоков хуже кода с их эмуляцией. Ультиматумов ставить мне не надо. Намажтесь см. картинку выше.



Офлайн

#7 Июнь 14, 2012 14:59:10

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Почему встроенные модули такое УГ?

Я ещё тестов подогнал, пусть asilyator помедетирует, почему его любимые треды выпоняют задачу медленее, чем последовательный запуск этой задачи несколько раз. Хочется услышать его комментарии.

import threading
import urllib
import html5lib
import time

def main():
print 'Fetching ixbt.com front page'
data = urllib.urlopen('http://ixbt.com/').read()
limit = 5

print 'Building %d trees without threads' % limit
start = time.time()
for x in xrange(limit):
tree = html5lib.parse(data, treebuilder='lxml', namespaceHTMLElements=False)
assert 'iXBT.com' in tree.xpath('//title/text()')[0]
print 'Time: %.02f' % (time.time() - start)

print 'Building %d trees using %d threads' % (limit, limit)
def worker():
tree = html5lib.parse(data, treebuilder='lxml', namespaceHTMLElements=False)
assert 'iXBT.com' in tree.xpath('//title/text()')[0]

start = time.time()
pool = []
for x in xrange(limit):
t = threading.Thread(target=worker)
t.start()
pool.append(t)
for t in pool:
t.join()
print 'Time: %.02f' % (time.time() - start)


if __name__ == '__main__':
main()

Результаты выполнения:
lorien@athlon:/tmp$ python tt.py 
Fetching ixbt.com front page
Building 5 trees without threads
Time: 4.30
Building 5 trees using 5 threads
Time: 7.59

Для тестов специально использована мега-тормозная html5lib библиотека, с которой работает asilyator.

Итого хотелось бы услышать от asilyator:
1) Зачем он использует html5lib которая на два порядка медленее lxml
2) Как он объяснит то, что пять тредов работают медленнее, чем просто запуск функции пять раз подряд.

Офлайн

#8 Июнь 14, 2012 15:05:40

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

Почему встроенные модули такое УГ?

lorien
1) Зачем он использует html5lib которая на два порядка медленее lxml
Она тут была рекламирована не раз. Если Вы ухитрились найти и поднять треды аж 2009 года, вы наверняка найдете и эти треды. Почему - спросите у авторов постов.

Она вроде бы должна парсить и html с ошибками, может ли этим похвастаться lxml?

И если благородный дон заметил, разговор был о том, как отреагирует код из ~500 тредов, если x из них будут потреблять 99% процессора в течении нескольких десятых секудны или больше, если треды настоящие и если они эмулируются через сопрограммы. Тест по большому счету к этому сценарию не относится.



Офлайн

#9 Июнь 14, 2012 15:06:30

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Почему встроенные модули такое УГ?

> Сделал. Ваш ход.
Вы не поняли. Я вам намекаю, что html5lib работает в 100 раз медленее, чем если использовать lxml напрямую.

> Какой код? Я сказал, что я без доказательств не поверю, что код с тредами до хотя бы 500-600 потоков хуже кода с их эмуляцией. Ультиматумов ставить мне не надо. Намажтесь см. картинку выше.

У вас слова с делом расходятся. Я прошу от вас элементарный код, который в 500 потоков запрашивает 1000 урлов. Оставьте свои словесные трюки для политических дебатов. У нас тут питон форум. Только код, только хардкор. Зачем вы выставляете себя пустозвоном?

Офлайн

#10 Июнь 14, 2012 15:09:33

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

Почему встроенные модули такое УГ?

lorien
> Сделал. Ваш ход.
Вы не поняли. Я вам намекаю, что html5lib работает в 100 раз медленее, чем если использовать lxml напрямую.
Да прочтет дон мой ответ до конца, благо там по этой теме аж 2 строчки.

lorien
> Сделал. Ваш ход.
Вы не поняли. Я вам намекаю, что html5lib работает в 100 раз медленее, чем если использовать lxml напрямую.
Да прочтет дон мой ответ до конца, благо там по этой теме аж 2 строчки.

У меня отношение результатов гораздо скромнее.

Для 20 раз:
Fetching ixbt.com front page
Building 20 trees without threads
Time: 28.78
Building 20 trees using 20 threads
Time: 38.56

Для 5 раз:
Fetching ixbt.com front page
Building 5 trees without threads
Time: 7.58
Building 5 trees using 5 threads
Time: 8.80

И все равно это не отвечает на мой вопрос.
В случае с тредами, пока будет парситься страница, другие треды могут выполнять операции, не загружающие процессор (делать запросы, получать ответы). В случае с кооперативной многозадачностью - нет.



Отредактировано asilyator (Июнь 14, 2012 15:26:32)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version