Windowsでは(少なくとも)、それだけでsys.setrecursionlimit
はありません。ハード制限はスレッドごとに設定されておりthreading.stack_size
、特定の制限に達したら、新しいスレッドを呼び出して作成する必要があります。(私は1MBだと思いますが、確かではありません)私はこのアプローチを使用して64MBスタックに増やしました。
import sys
import threading
threading.stack_size(67108864) # 64MB stack
sys.setrecursionlimit(2 ** 20) # something real big
# you actually hit the 64MB limit first
# going by other answers, could just use 2**32-1
# only new threads get the redefined stack size
thread = threading.Thread(target=main)
thread.start()
制限があるかどうかは確認していませんがthreading.stack_size
、お気軽に試してみてください...ここを確認する必要があります。
要約すると、これsys.setrecursionlimit
はインタプリタ自体によって強制される制限にすぎません。 threading.stack_size
OSによって課される実際の制限を操作できます。最初に後者の制限に達すると、Pythonは完全にクラッシュします。