Форум сайта python.su
>>Я вот в свое время задался таким вопросом - результаты неутешительны, больше 80 потоков просто не имеет смысла ставить, прироста практически нет…
есть, 200 потоков практически не грузят сервак. можно параллельно копии запускать, они уже лучше нагружают, но синхронизировать копии неудобно.
Офлайн
o7412369815963Согласен. Я говорил о сетевых client-side приложениях.
В некоторых задачах и 80 много, например математические вычисления на 1-м потоке будут быстрее отрабатывать чем на 80-и
ИгнатИспользуйте Stackless и запускайте мириады потоков….
есть, 200 потоков практически не грузят сервак. можно параллельно копии запускать, они уже лучше нагружают, но синхронизировать копии неудобно.
Отредактировано (Июль 8, 2011 10:01:43)
Офлайн
Можно при желании запустить и несколько тысяч потоков, если уменьшить каждому размер стека:
threading.stack_size( 32768 )
Офлайн
Игнат, вы так и не ответили. Зачем 200 потоков? Зачем?
Какую задачу они решают?
Офлайн
Каждый поток работает с сетью посредством urllib
Накапливает информацию, хранит, отправляет.
1 поток - один работающий объект. Иного не дано.
Соответственно, увеличение числа потоков - увеличивает производительность.
если уменьшить каждому размер стека: threading.stack_size( 32768 )
Используйте Stackless и запускайте мириады потоков....
Офлайн
> 1 поток - один работающий объект. Иного не дано
Ты не прав :-). (В смысле, если речь строго про системные потоки.)
..bw
Отредактировано (Июль 9, 2011 07:10:03)
Офлайн
ИгнатЭто редкостный бред. Охрененная логика. Я не буду вдаваться в объяснения механизма, сударь отличается редкостным умом и сообразительностью, умом и сообразительностью…
1 поток - один работающий объект. Иного не дано.
Соответственно, увеличение числа потоков - увеличивает производительность.
Офлайн
возьми pycurl и потыкай в его асинхронный интерфейс
Офлайн
Игнат
Судя по описанию вашей задачи узким местом будет не кол-во потоков, а система ввода/вывода (в данном случае: сеть и дисковая подсистема).
Не мешало бы сделать несколько тестов и определить оптимальное число потоков.
Без параметров сервера/кластера, где все это крутится мы может только пальцем в небо тыкать на предмет оптимального кол-ва потоков.
ЗЫ
И не забывайте, что переключение между потоками тоже отнимает процессорное время.
ЗЫ2
При проблемах с сетью можете поиметь огроменное кол-во зависших потоков. По крайней мере, в пределах таймаута.
Потому все таки рекомендую послушать советы в этой ветке, не смотря на тон, каким они были высказаны.
В любом случае, вы от этого только выиграете.
Офлайн
я когда то писал парсер и брутер для форумов, по потокам могу сказать следующие: тестировал на разных компьютерах и интернетах форум www.vbulletin.com/forum/forum.php -парсинг за минимальное время был при 15 потоках, брут при 5. Больше 50-ти потоков становились вообще не управляемые, больше 100 -зависал скрипт (в убунте и виндовсе)
Офлайн