首页 > 解决方案 > 在 IF 语句中使用时间段

问题描述

所以我有一个变量 x ,它在 while 循环中通过 websocket 更新为新值。

我有一个 IF 语句在哪里

if x >= 150 :
    #execute orders here

现在我遇到的问题是,有时 x 值会在几分之一秒内飙升至 150 以上,甚至可能不到 0.01 秒,在这种情况下,我不想执行命令,而忽略这一点。

我正在考虑通过执行 if x >= 150 并保持 0.1 秒来解决这个问题。

但我不确定如何执行此操作。也许我可以创建一个时间变量 y,当 x 第一次超过 150 时,然后测量与 datetime.now 的时间差。问题在于变量 y 将不断更改为当前时间,因为 x 将通过 websocket 连接不断更新。

任何想法如何做到这一点?请记住,执行速度对于让我赚钱的这段代码至关重要,而且它也是一个 websocket,因此 x 值将不断更新。

标签: pythondatetimetimewebsockettimedelta

解决方案


这是我为解决这个问题而编写的代码。

from datetime import datetime
from datetime import timedelta

x=100 # trigger value
y = datetime.now()

while True :
    try:
        if x > 150 :
            z= datetime.now()
            if z-y >= timedelta(seconds=5) : # time here represents how long it needs to stay past trigger point
                #execute code here
                print(y)
                y = datetime.now()
    except Exception as e: print( "this is the error1:" +str(e))    

我也在异步循环中这样做。在这种情况下,可以在这里找到更好的解决方案: 如何使用 asyncio 定期执行函数?


推荐阅读