gpt4 book ai didi

python - 如何在线程内运行递归函数?

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:05 25 4
gpt4 key购买 nike

我想在我的主代码(我猜它被称为主线程)仍在运行时运行一个重复自身的函数,所以我这样做了,可能有更好的方法来做到这一点,但我对编码和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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com