python - 每隔一段时间执行一次动作
问题描述
我目前正在尝试(Python 2.7)设置以固定采样频率(即每 x 毫秒)执行的操作。但是,我面临着不准确的结果。使用下面的代码(采样频率为 1000Hz,代码运行 5 秒)我希望有 5 * 10000 个样本。相反,我得到了更低的值。我希望采样频率最多为 5000Hz,但我也会对 1000Hz 感到满意。
谁能帮我?
import datetime
count = 0
loop_start_time = start_time = datetime.datetime.now()
while datetime.datetime.now() - loop_start_time <= datetime.timedelta(0,5,0): #loop for 5 seconds
if datetime.datetime.now() - start_time >= datetime.timedelta(0,0,1000): #perform an action every 1000 microseconds (1 millisecond, 0.1 seconds)
start_time = datetime.datetime.now()
count = count + 1
print count
最好的问候, T2
解决方案
像这样的东西会起作用吗?
import time
import threading
total_time = 5
increment_time = .1
is_running = False
count = 0
def incrementCounter():
global count
global is_running
is_running = True
threading.Timer(increment_time, incrementCounter).start()
count += 1
# Any additional code should be put here
end_time = time.time() + total_time
while time.time() < end_time:
if not is_running:
incrementCounter()
print count
为此我得到〜50的输出。
推荐阅读
- android - Firebase 身份验证:无论我尝试什么,身份验证都失败了电子邮件和密码
- r - networkd3 正在显示所有数据,而不是我想根据 Shiny 应用程序中的小部件输入显示的子集
- sas - SAS 是低于目前列中最高数字的数字
- javascript - 实时时间到达 23:00 时的 Javascript
- sql - 如果为空,则将 NVL 与 JOIN 一起使用不返回默认值
- vimeo - 如何在 Vimeo 点播页面中管理多个季节?
- angular - 将查询参数传递给辅助路由 Angular 5
- html - bootstrap4 中的多个模式不起作用
- javascript - Mongoose - 如果新值不在可用枚举列表中,如何设置默认值
- python - Pandas 根据字典中描述的关系加入两个数据框