Mar*_*aio 3 python python-multithreading
所以我收到错误
[Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
Run Code Online (Sandbox Code Playgroud)
我正在运行的代码是
import threading
def hello_world(a):
threading.Timer(2.0, hello_world(a)).start() # called every minute
print(a)
print("Hello, World!")
hello_world('a')
Run Code Online (Sandbox Code Playgroud)
我注意到当hello_world函数中没有参数时不会发生错误。但是一旦我需要将参数传递给函数,我就会收到错误消息。有人可以解释为什么会这样以及如何解决吗?
该threading.Timer()构造期望功能和参数传递给该函数作为单独的参数。正确的调用方式是这样的:
threading.Timer(2.0, hello_world, (a,)).start()
Run Code Online (Sandbox Code Playgroud)
可以看到我们hello_world没有调用就引用了,我们在一个1元组中分别列出了我们想要传递的参数(a,)。
您目前的做法是,hello_world(a)在表达式结束之前立即进行评估,试图找出返回值是什么hello_world(a)——而不是启动计时器,然后在每次计时器时评估表达式熄灭。
| 归档时间: |
|
| 查看次数: |
1079 次 |
| 最近记录: |