gpt4 book ai didi

python - threading.Timer如何避免Python中的递归?

转载 作者:行者123 更新时间:2023-12-03 13:02:30 24 4
gpt4 key购买 nike

我在stackoverflow(Run certain code every n seconds)中发现了一个代码段,该代码段每隔n秒运行一次函数。

import threading

def printit():
threading.Timer(5.0, printit).start()
print "Hello, World!"

printit()

我试图对我的代码做同样的事情,当然我得到了RecursionError:调用Python对象时超出了最大递归深度
import time

def call_f_after_n_secs(f, n):
time.sleep(n)
f()

def my_fun():
print("my_fun")
call_f_after_n_secs(my_fun, 0.01)

my_fun()

我的问题是,threading.Timer如何避免最大递归深度?我的意思是(除了从程序主流程“分离”代码的线程部分),Timer如何在内部工作并调用printit()而不进行递归调用?

最佳答案

"except from the part of threading that "detaches" the code from the main flow of the program"



没有那部分,您将无法理解。最初的设置不会一开始就引入递归,因为 printit()在另一个线程中被调用。每个线程都有自己的堆栈,第一个线程从不向其添加对 printit()的另一个调用。原始线程只是初始化了一个新的 Thread -object,新线程本身在引导后调用了 printit()

关于python - threading.Timer如何避免Python中的递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59437379/

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