Python Glossary English

все 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Сообщить о неточности