python - 在 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 值将不断更新。
解决方案
这是我为解决这个问题而编写的代码。
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 定期执行函数?
推荐阅读
- cors - 带有查询参数的路径上顶点中的 Cors
- javascript - 自定义 JS 仅适用于分页项目的第一页
- javascript - 如何在函数中执行 2 个 firebase 查询以检索数据反应原生
- linux - 在 UNIX SLES12 上永久设置环境变量
- rust - 如何创建一个能够在 rust 中返回通用读取特征的读取器工厂
- javascript - 调用一个变量的 setState 也会更新另一个状态变量
- javascript - 在分层树结构中打印姓氏
- python - 服务器的 IPv6 替代方案
- html - 同一页面上元素的锚定标记不起作用
- bots - 电报:如何自动加入聊天并通过机器人发布消息