Форум сайта python.su
Добрый день.
Вот код:
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
И это - на одной и той же машине. Конфигурация питона и ОС - везде по
умолчанию.
Как можно это победить и в чем тут дело?
Спасибо.
Офлайн
/proc/sys/kernel/threads-max
Офлайн
redixin32750
/proc/sys/kernel/threads-max
Офлайн
NR_TASKS в linux/include/linux/tasks.h с 512 до 2048
Офлайн
clopomorнет такого файла у меня в системе(OpenSuse 10.3). исходники ядра установлены.
NR_TASKS в linux/include/linux/tasks.h с 512 до 2048
Офлайн
а в сислоге ченить пишет?
Офлайн
redixinничего.
а в сислоге ченить пишет?
Офлайн
возможно бока в glibс либе, а не в питоне…
Офлайн
поиграйся с ulimit -s, там памяти под стеки не хватает. меньше ulimit -s - больше тредов.
Офлайн
только что тем же самым занимался;)
глянь threading.stack_size() ф-цию
Офлайн