Форум сайта python.su
lorienОбычный
Далее я просил вас выложить код, который у вас из обычной страницы делает DOM-дерево одну секунду. Где код?
tree = html5lib.parse(file(fname,"rb"), treebuilder='lxml', namespaceHTMLElements=False)
lorienВыложите асинхронный, я из него сделаю треды. Чем Вас это не устраивает?
> Выложите свой, раз Вы лучше с грабом знакомы, в чем проблема-то?
Я хочу вам показать наглядную разницу между тредами и асинхронностью. Раз вы так рьяно защищаете треды, то я предлагаю вам честно сравнить два подхода. Когда вы выложите свой код, я выложу асинхронный. Затем сравним результаты.
Офлайн
> подгружает систему на долю секунды.
На долю или на секунду? Это как бы разные вещи.
> Выложите асинхронный, я из него сделаю треды. Чем Вас это не устраивает?
Я не хочу чтобы из моего кода что-то делали, я хочу видеть ваше творчество, так сказать. Для вас такая проблема написать самоу нужный код?
Офлайн
> П.С. Вы при обращении к одному собеседнику пишется с большой буквы: “Вы”, нет?
А вы серебряный пишите с двумя н. БЕ-БЕ-БЕ!
Офлайн
lorienОщутимо грузит. На несколько десятых имхо, тесты будут потом.
> подгружает систему на долю секунды.
На долю или на секунду? Это как бы разные вещи.
lorienВы должны граб знать лучше меня. Я может тоже не хочу, чтобы из моего кода что-то делали, что теперь? Дедлок?
> Выложите асинхронный, я из него сделаю треды. Чем Вас это не устраивает?
Я не хочу чтобы из моего кода что-то делали, я хочу видеть ваше творчество, так сказать. Для вас такая проблема написать самоу нужный код?
lorienЯ хоть один раз написал, а вы с маленькой тут пишут постоянно. Это уже как -тся/-ться
> П.С. Вы при обращении к одному собеседнику пишется с большой буквы: “Вы”, нет?
А вы серебряный пишите с двумя н. БЕ-БЕ-БЕ!
Отредактировано slav0nic (Июнь 14, 2012 14:32:01)
Офлайн
> Ощутимо грузит. На несколько десятых имхо, тесты будут потом.
Тесты будут сейчас! :)
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
Вы должны граб знать лучше меня. Я может тоже не хочу, чтобы из моего кода что-то делали, что теперь? Дедлок?Я и не собираюсь ничего из вашего кода делать. Так что дедлока нет. Вы выше заявили, что хотите мой код использовать, я хочу чтобы вы с нуля написали. Я же заявляю, что не буду использовать ваш код. Так что можете смело выкладывать. Если я не увижу кода, я просто расценю весь топик как мозгоёбство, профанацию и демагогию.
Офлайн
lorien
Выводы сами сделаете?
lorienСделал. Ваш ход.
Wall time: 0.93 s
asilyator
детские картинки
lorienКакой код?
. Вы выше заявили, что хотите мой код использовать, я хочу чтобы вы с нуля написали.
Офлайн
Я ещё тестов подогнал, пусть 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
Офлайн
lorienОна тут была рекламирована не раз. Если Вы ухитрились найти и поднять треды аж 2009 года, вы наверняка найдете и эти треды. Почему - спросите у авторов постов.
1) Зачем он использует html5lib которая на два порядка медленее lxml
Офлайн
> Сделал. Ваш ход.
Вы не поняли. Я вам намекаю, что html5lib работает в 100 раз медленее, чем если использовать lxml напрямую.
> Какой код? Я сказал, что я без доказательств не поверю, что код с тредами до хотя бы 500-600 потоков хуже кода с их эмуляцией. Ультиматумов ставить мне не надо. Намажтесь см. картинку выше.
У вас слова с делом расходятся. Я прошу от вас элементарный код, который в 500 потоков запрашивает 1000 урлов. Оставьте свои словесные трюки для политических дебатов. У нас тут питон форум. Только код, только хардкор. Зачем вы выставляете себя пустозвоном?
Офлайн
lorienДа прочтет дон мой ответ до конца, благо там по этой теме аж 2 строчки.
> Сделал. Ваш ход.
Вы не поняли. Я вам намекаю, что html5lib работает в 100 раз медленее, чем если использовать lxml напрямую.
lorienДа прочтет дон мой ответ до конца, благо там по этой теме аж 2 строчки.
> Сделал. Ваш ход.
Вы не поняли. Я вам намекаю, что html5lib работает в 100 раз медленее, чем если использовать lxml напрямую.
Fetching ixbt.com front page Building 20 trees without threads Time: 28.78 Building 20 trees using 20 threads Time: 38.56
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)
Офлайн