所以我偶然发现了几乎满足我的问题的答案。
在我的情况下,我想每0.8秒左右在市场上获取限价买单的状态5秒。我找到的代码如下所示:
import threading
def printit():
threading.Timer(0.8, printit).start()
print("Hello, World!")
并运行5秒钟,可以执行以下操作:
import time
t_end = time.time() + 5
while time.time() < t_end:
print('Hello World')
但是将这两者结合起来并不会起作用:
while time.time() < t_end:
printit()
所以我只是想知道如何让printit()每0.8秒运行5秒钟?
答案 0 :(得分:3)
这是您的线程代码的变体。使用线程的好处是整个程序没有被冻结,因此您可以(例如)在等待时从URL获取一些数据,而不是具有获取 - 睡眠周期。
import threading
import time
def printit(interval, endtime):
now = time.time()
if now < endtime:
threading.Timer(interval, printit, args=[interval, endtime]).start()
print("Hello", now - t_start)
t_start = time.time()
printit(0.8, t_start + 5)
典型输出
Hello 4.458427429199219e-05
Hello 0.8010139465332031
Hello 1.6028234958648682
Hello 2.4049606323242188
Hello 3.205900192260742
Hello 4.0072197914123535
Hello 4.808593988418579
答案 1 :(得分:1)
你走了!把你的函数调用放在我打印的地方!
import time
totalTime = 5
dt = 0.0
while dt <= totalTime:
print(dt)
time.sleep(0.8)
dt += 0.8