import threading import _thread import sys def recurse(): return recurse() def outer(): try: recurse() except RecursionError: pass n = int(sys.argv[1]) s = int(sys.argv[2]) * 1024 print("setrecursionlimit(%s)" % n) sys.setrecursionlimit(n) _thread.stack_size(s) print("stack_size: %.1f kiB = %.1f MiB" % (s / 1024, s / 1024**2)) w = threading.Thread(target=outer) w.start() w.join() print('end of main thread')