Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 25, 2007 18:52:07

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

Добрый день.
Вот код:

import time, threading
def f1():
for i in range (5):
print threading.activeCount()
time.sleep(10)
for i in range(1000):
p1 = threading.Thread(target=f1)
p1.start()

Результат такой - во FreeBSD 6.2 и Windows XP легко создаются 1000
потоков. В линуксе разных версий, доступных мне, везде можно создать
300-400 потоков, дальше ошибка:
thread.error: can't start new thread
И это - на одной и той же машине. Конфигурация питона и ОС - везде по
умолчанию.
Как можно это победить и в чем тут дело?

Спасибо.



Офлайн

#2 Ноя. 26, 2007 00:01:20

redixin
От:
Зарегистрирован: 2006-11-27
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

/proc/sys/kernel/threads-max



Офлайн

#3 Ноя. 26, 2007 07:08:32

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

redixin
/proc/sys/kernel/threads-max
32750
и?



Офлайн

#4 Ноя. 26, 2007 10:23:51

clopomor
От:
Зарегистрирован: 2007-06-12
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

NR_TASKS в linux/include/linux/tasks.h с 512 до 2048



Офлайн

#5 Ноя. 26, 2007 10:31:05

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

clopomor
NR_TASKS в linux/include/linux/tasks.h с 512 до 2048
нет такого файла у меня в системе(OpenSuse 10.3). исходники ядра установлены.



Офлайн

#6 Ноя. 26, 2007 12:41:56

redixin
От:
Зарегистрирован: 2006-11-27
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

а в сислоге ченить пишет?



Офлайн

#7 Ноя. 26, 2007 13:07:58

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

redixin
а в сислоге ченить пишет?
ничего.

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



Офлайн

#8 Ноя. 26, 2007 13:45:00

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

большое количество потоков в многопоточном приложении в linux

возможно бока в glibс либе, а не в питоне…

Офлайн

#9 Ноя. 26, 2007 14:03:42

redixin
От:
Зарегистрирован: 2006-11-27
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

большое количество потоков в многопоточном приложении в linux

поиграйся с ulimit -s, там памяти под стеки не хватает. меньше ulimit -s - больше тредов.



Офлайн

#10 Ноя. 26, 2007 14:20:09

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

большое количество потоков в многопоточном приложении в linux

только что тем же самым занимался;)
глянь threading.stack_size() ф-цию

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version