Уведомления

Группа в Telegram: @pythonsu

#1 Июль 8, 2011 09:41:52

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

лимит на потоки в питон 3

>>Я вот в свое время задался таким вопросом - результаты неутешительны, больше 80 потоков просто не имеет смысла ставить, прироста практически нет…

есть, 200 потоков практически не грузят сервак. можно параллельно копии запускать, они уже лучше нагружают, но синхронизировать копии неудобно.



Офлайн

#2 Июль 8, 2011 10:00:43

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

лимит на потоки в питон 3

o7412369815963
В некоторых задачах и 80 много, например математические вычисления на 1-м потоке будут быстрее отрабатывать чем на 80-и
Согласен. Я говорил о сетевых client-side приложениях.

Игнат
есть, 200 потоков практически не грузят сервак. можно параллельно копии запускать, они уже лучше нагружают, но синхронизировать копии неудобно.
Используйте Stackless и запускайте мириады потоков….

Практика показывает что количество потоков далеко не всегда играет решающую роль.
Дайте конкретную задачу, которую вы решаете, в данный момент - это гадание на кофейной гуще.

P.S. Вместо 60 потоков можно запустить 600 копий Python, они нагрузят сервак сильнее… Да и что за цель такая - загрузить сервак О_о



Отредактировано (Июль 8, 2011 10:01:43)

Офлайн

#3 Июль 8, 2011 12:12:32

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

лимит на потоки в питон 3

Можно при желании запустить и несколько тысяч потоков, если уменьшить каждому размер стека:

threading.stack_size( 32768 )
Только это напоминает историю из мультфильма “Жадный богач” про 7 шапок.



Офлайн

#4 Июль 8, 2011 14:35:13

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

лимит на потоки в питон 3

Игнат, вы так и не ответили. Зачем 200 потоков? Зачем?
Какую задачу они решают?



Офлайн

#5 Июль 8, 2011 22:24:04

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

лимит на потоки в питон 3

Каждый поток работает с сетью посредством urllib
Накапливает информацию, хранит, отправляет.

1 поток - один работающий объект. Иного не дано.
Соответственно, увеличение числа потоков - увеличивает производительность.

если уменьшить каждому размер стека: threading.stack_size( 32768 )
а к чему именно это приводит, можно попроще? потоку выделяется меньше памяти? не чревато ли это вылетом потока при нехватке этой самой памяти?

Используйте Stackless и запускайте мириады потоков....
я к сожалению не знаком со stackless
если вы знакомы, ответьте пожалуйста на вопрос - сильно ли код микропотоков стеклесс отличается от потоков Concurrent?
и что мне даст переход на него?

на данный момент кол-во моих потоков ограничено тем узким местом, что каждый поток ломится в БД sqlite самостоятельно, а не через queue
Когда я это перепишу, возможно наткнусь на какие-то иные лимиты, но они мне пока неизвестны.



Офлайн

#6 Июль 9, 2011 07:04:13

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

лимит на потоки в питон 3

> 1 поток - один работающий объект. Иного не дано
Ты не прав :-). (В смысле, если речь строго про системные потоки.)

..bw



Отредактировано (Июль 9, 2011 07:10:03)

Офлайн

#7 Июль 9, 2011 09:43:11

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

лимит на потоки в питон 3

Игнат
1 поток - один работающий объект. Иного не дано.
Соответственно, увеличение числа потоков - увеличивает производительность.
Это редкостный бред. Охрененная логика. Я не буду вдаваться в объяснения механизма, сударь отличается редкостным умом и сообразительностью, умом и сообразительностью…
Вам еще раз надо пересмотреть архитектуру. Сделать пул потоков и очередь задач. А не по потоку на задачу. При этом Вы минимизируете количество потоков до 1-2 на физическое ядро.



Офлайн

#8 Июль 9, 2011 10:49:21

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

лимит на потоки в питон 3

возьми pycurl и потыкай в его асинхронный интерфейс

Офлайн

#9 Июль 9, 2011 14:40:29

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

лимит на потоки в питон 3

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

ЗЫ
И не забывайте, что переключение между потоками тоже отнимает процессорное время.

ЗЫ2
При проблемах с сетью можете поиметь огроменное кол-во зависших потоков. По крайней мере, в пределах таймаута.
Потому все таки рекомендую послушать советы в этой ветке, не смотря на тон, каким они были высказаны.
В любом случае, вы от этого только выиграете.



Офлайн

#10 Июль 9, 2011 15:32:40

InPython
От:
Зарегистрирован: 2011-01-31
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

лимит на потоки в питон 3

я когда то писал парсер и брутер для форумов, по потокам могу сказать следующие: тестировал на разных компьютерах и интернетах форум www.vbulletin.com/forum/forum.php -парсинг за минимальное время был при 15 потоках, брут при 5. Больше 50-ти потоков становились вообще не управляемые, больше 100 -зависал скрипт (в убунте и виндовсе)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version