我想在我的主代码(我猜它被称为主线程)仍在运行时运行一个重复自身的函数,所以我这样做了,可能有更好的方法来做到这一点,但我对编码和Python很陌生,所以我不知道自己在做什么。
import threading
import time
def x():
print("hey")
time.sleep(1)
x()
t = threading.Thread(target=x)
t.daemon = True
t.start()
当我将 daemon 设置为 False 时,它会重复自身,但是当我停止程序时,我会收到错误
最佳答案
CPython(Python 的引用实现)未实现 Tail Call Optimization (TCO) .¹ 这意味着您不能运行过多的递归,因为它是有限的,并且当您达到此限制时,您将收到 RuntimeError
。
sys.getrecursionlimit() # 3000
因此,不要再次从 x()
中调用 x()
,而是在 x() 中创建一个
:while True
循环)
import threading
import time
def x():
while True:
print("hey")
time.sleep(1)
t = threading.Thread(target=x, daemon=True)
t.start()
time.sleep(10) # do something, sleep for demo
<小时/>
1 Stackless Python将是一个没有递归限制的 Python 实现。
关于python - 如何在线程内运行递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231523/