Форум сайта python.su
lorienА на чем основана эта рекомендация? Есть тесты, на каком количестве соединений насколько меньше они грузят? Или это такое внутреннее чувство? :)
> Краеугольный камень срача “треды vs кооперативная многозадачность”.
Вы заблуждаетесь, я не учавствую в сраче. Просто рекомендую использовать асинхронность т.к. она меньше систему грузит. Если вам нравится использовать треды, ради бога.
asilyatorИ чо? На питоне он насколько больше?
> на делфях
:)
Отредактировано asilyator (Июнь 14, 2012 13:15:44)
Офлайн
asilyatorНа самом деле не так страшен груз, как переключение контекста: http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0
А на чем основана эта рекомендация? Есть тесты, на каком количестве соединений насколько меньше они грузят? Или это такое внутреннее чувство? :)
Офлайн
asilyator
Что многотредовое приложение на питоне не будет работать быстрее на многоядернике, чем на одноядернике с такой же частотой?
asilyator
Ты две строчки способен прочесть?
Я написал о том, что даже на 500 тредах оверхед (правда, в приложении на делфях) абсолютно минимальный
Отредактировано slav0nic (Июнь 14, 2012 13:24:54)
Офлайн
> А на чем основана эта рекомендация? Есть тесты, на каком количестве соединений насколько меньше они грузят? Или это такое внутреннее чувство? :)
Ну скажем так, система раком вставала на сотнях тредах. Когда я использую сотни сетевых потоков, я вообще этого не замечаю.
> во-первых, для него нужен специальный фреймверк
Поэтому и был написан Grab:Spider - он действительно позволяет писать парсеры легко и непринуждённо. Ну или scrapy - там такая же архитектура.
> и во-вторых, все операции должны выполняться “мгновенно”. Если Вы парсите документ и парсинг занимает секунду, то эту секунду все потоки будут отдыхать. При многопоточности они бы занимались своим делом.
Чтобы парсинг занимал секунду, надо парсить *очень* большой документ. Среднее время парсинга документа на порядки меньше. Для ускорения парсинга имеет смысл разбросать на несколько процессов (по количеств ядер), но это усложняет логику программы (или фреймворка) и обычно хватает работы на одном ядре.
Кстати, питоновские треды работают в рамках одного ядра т.е. выполняются они на разных ядрах, но суммарно используют мощность только одного ядра.
Офлайн
asilyator
Если Вы парсите документ и парсинг занимает секунду, то эту секунду все потоки будут отдыхать. При многопоточности они бы занимались своим делом.
Офлайн
lorienТут проблема должна быть в чем-то другом. Код можно?
Ну скажем так, система раком вставала на сотнях тредах.
lorienЯ про что-то вроде Twisted, где можно, например, делать паузу.
> во-первых, для него нужен специальный фреймверк
Поэтому и был написан Grab:Spider - он действительно позволяет писать парсеры легко и непринуждённо. Ну или scrapy - там такая же архитектура.
lorienУ меня построение дерева с помощью html5lib где-то столько занимает на вполне обычной странице.
Чтобы парсинг занимал секунду, надо парсить *очень* большой документ.
slav0nicА в питоне оно принципилально по другому? Питонкапец++ :) Хотя надо проверить. Код можно?
ах, так мы про Delphi!
slav0nicА что ты хотел этим сказать? Не понял.
asilyator
Что многотредовое приложение на питоне не будет работать быстрее на многоядернике, чем на одноядернике с такой же частотой?
в рамках 1 процесса - нет
slav0nic
asilyator
Не говоря о том, что треды лучше параллелятся (для питона неактулально).
смелое утверждение %) очередное горе от ума и не понимание GIL в полной мере.
slav0nicПодумай еще раз. Что будут делать другие потоки при кооперативной многозадачности и что при настоящей (забыл как ее зовут), если один из них займет процессор на время, намного большее кванта времени, выделенной одному треду.
Треды в основном полезны при больших IO, где велико ожидание ответа, аля запрос по сети и так далее, но твои размышления не совсем верны)
Отредактировано asilyator (Июнь 14, 2012 13:36:11)
Офлайн
Треды могут быть полезны в задачах, которые трудно разбить на относительно маленькие синхронные кусочки. Тогда пишем треды и не паримся, что у нас всё зависнте из-за долгого синхронного кусочка.
Офлайн
asilyator
А в питоне оно принципилально по другому?
asilyatorто что для 400% загрузки 4 CPU надо запустить 4 процесса для начала, а 100 тредов тебе все ресурсы CPU не выжрут, это по-моему даже в доке описано, но другими словами)
А что ты хотел этим сказать? Не понял.
Отредактировано slav0nic (Июнь 14, 2012 13:38:36)
Офлайн
lorienВот-вот. Т.е. чтобы отказаться от тредов, надо доказать, что кусочки не могут быть долгими или, хотя бы, что треды не подходят. Возьметесь?
Треды могут быть полезны в задачах, которые трудно разбить на относительно маленькие синхронные кусочки. Тогда пишем треды и не паримся, что у нас всё зависнте из-за долгого синхронного кусочка.
slav0nicВ чем горе от ума?
asilyator
А в питоне оно принципилально по другому?
Я же написал, прочитай что такое GIL и как он связан с потоками и native потоков могут работать одновременно и как происходит переключение между потоками (то что regall
кидал например)
Ну и питон как бы интерпретатор… конечно по другому
Офлайн