все Python 3threadingфункция
threading.stack_size()
потоки
Узнать или задать размер стека для потоков, создаваемых после вызова; 0 означает размер по умолчанию для платформы.
Синтаксис
threading.stack_size([size])
Действует только на потоки, созданные позже, и возвращает прежнее значение — его удобно сохранить и восстановить. Документированный минимум 32 КиБ, но на многих системах реальный больше: тогда ValueError с другим числом в сообщении; размер лучше брать кратным 4096. Стек увеличивают, когда глубокая рекурсия в потоке (с поднятым sys.setrecursionlimit) обрушивает весь процесс, а не даёт RecursionError.
Примеры
import threading
old = threading.stack_size(4 * 1024 * 1024) # 4 МиБ для новых потоков
print(old) # → ? 0 — 0 значит «по умолчанию»
depth = []
def deep(n):
return 0 if n == 0 else 1 + deep(n - 1)
t = threading.Thread(target=lambda: depth.append(deep(500)))
t.start()
t.join()
threading.stack_size(old)
print(depth) # → [500]
import threading
try:
threading.stack_size(1024)
except ValueError as e:
print(e) # → ? size must be at least 32768 bytes — минимум зависит от ОС
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности