Python 在X秒内,每Y秒做一些动作
所以我偶然发现了一个几乎能满足我的问题的答案 在我的例子中,我希望每0.8秒左右获取市场中5秒的限价买入订单状态。我发现的代码如下所示:Python 在X秒内,每Y秒做一些动作,python,python-3.x,Python,Python 3.x,所以我偶然发现了一个几乎能满足我的问题的答案 在我的例子中,我希望每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_
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')
导入时间
t_end=time.time()+5
当time.time()结束时:
打印('Hello World')
但把这两个结合起来是行不通的:
while time.time() < t_end:
printit()
while time.time()
所以我只是想知道如何使printit()每0.8秒运行5秒?给你!把你的函数调用放在我打印的地方
import time
totalTime = 5
dt = 0.0
while dt <= totalTime:
print(dt)
time.sleep(0.8)
dt += 0.8
导入时间
总时间=5
dt=0.0
而dt给你!把你的函数调用放在我打印的地方
import time
totalTime = 5
dt = 0.0
while dt <= totalTime:
print(dt)
time.sleep(0.8)
dt += 0.8
导入时间
总时间=5
dt=0.0
而dt这里是线程代码的一个变体。使用线程的好处是整个程序不会被冻结,因此您可以(例如)在等待时从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)
这里是线程代码的变体。使用线程的好处是整个程序不会被冻结,因此您可以(例如)在等待时从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)
这不是一个非常健壮的解决方案,因为时间。睡眠不精确。这几乎肯定需要6秒以上才能完成(特别是因为你在最后一次睡眠中又睡了一段时间)。不过,对于控制台应用程序来说,这是一个很好的快速解决方案。@AdamSmith他确实说过“0.8秒左右”作为参考@isquared KeepitReal注意,sleep
将使整个程序(至少)在指定的时间间隔内休眠。这可能没问题,但如果你不想发生这种情况,那么你应该使用线程。这不是一个非常健壮的解决方案,因为time。sleep
是不精确的。这几乎肯定需要6秒以上才能完成(特别是因为你在最后一次睡眠中又睡了一段时间)。不过,对于控制台应用程序来说,这是一个很好的快速解决方案。@AdamSmith他确实说过“0.8秒左右”作为参考@isquared KeepitReal注意,sleep
将使整个程序(至少)在指定的时间间隔内休眠。这可能没问题,但如果你不想发生这种情况,那么你应该使用线程。我希望看到使用异步协程。我可能会在午餐时玩这个,我还没有用async/Wait做太多。回答得好@PM2Ring@AdamSmith去年我对async做了一点了解,但我几乎忘记了我学到的一切@PM2Ring我记得我看着它,愤怒地嘲笑着,心想“如果我想做这件事,我会用围棋来写的。”哦,我仍然为自己感到骄傲,然后……)我希望看到使用异步协程实现这一点。我可能会在午餐时玩这个,我还没有用async/Wait做太多。回答得好@PM2Ring@AdamSmith去年我对async做了一点了解,但我几乎忘记了我学到的一切@PM2Ring我记得我看着它,愤怒地嘲笑着,心想“如果我想做这件事,我会用围棋来写的。”哦,我仍然为自己感到骄傲,然后……)