每三秒运行一段代码
send_every_3_secs(circ_attack, data)
circ_attack是一个实例,数据是str
def send_every_3_secs(circ_attack, data):
circ_attack.streamData(1, data)
threading.Timer(3.0, send_every_3_secs(circ_attack, data)).start()
我遇到的问题就在这里,我收到一条长错误信息:
File "tor.py", line 570, in send_every_3_secs
threading.Timer(3.0, send_every_3_secs(circ_attack, data)).start()
File "tor.py", line 570, in send_every_3_secs
threading.Timer(3.0, send_every_3_secs(circ_attack, data)).start()
我做错了什么?
答案 0 :(得分:2)
使用send_every_3_secs
关键字参数将参数传递给args
:
def send_every_3_secs(circ_attack, data):
circ_attack.streamData(1, data)
threading.Timer(3.0, send_every_3_secs, args=(circ_attack, data)).start()
当您通过send_every_3_secs(circ_attack, data)
时,首先调用该函数,并将其返回值传递给threading.Timer
。但是由于send_every_3_secs
正在调用自身,因此遇到RuntimeError:"超出最大递归深度"因为没有任何电话真正完成。