使用计时线程功能的问题

时间:2014-09-08 20:40:33

标签: python

每三秒运行一段代码

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()

我做错了什么?

1 个答案:

答案 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:"超出最大递归深度"因为没有任何电话真正完成。