这个问题在这里已有答案:
我想逐行读取文件并以固定的间隔输出每一行。
该脚本的目的是重放一些GPS日志文件,同时更新时间/日期字段,因为我正在测试的软件拒绝消息,如果它们离系统时间太远。
我正在尝试使用apscheduler,因为我希望输出速率尽可能接近10Hz,这似乎不能通过简单的睡眠命令实现。
我是Python的新手,所以我可以通过这样的任务来适应变量的范围。我最接近的工作是通过从我的预定函数中的文件对象中读取行。
import sys, os
from apscheduler.schedulers.blocking import BlockingScheduler
def emitRMC():
line = route.readline()
if line == b'':
route.seek(0)
line = route.readline()
print(line)
if __name__ == '__main__':
route = open("testfile.txt", "rb")
scheduler = BlockingScheduler()
scheduler.add_executor('processpool')
scheduler.add_job(emitRMC, 'interval', seconds=0.1)
scheduler.start()
然而,这并不是真正感觉正确的进行方式,我也看到每个输入行在输出上重复10次,我无法解释。
重复似乎非常一致,我认为可能是由于max_workers,尽管我已经将其设置为1而没有任何影响。
我也将间隔改为10Hz,10倍的重复感觉它可能不仅仅是巧合。
通常当我遇到这样的问题时,这意味着我走向错误的方向,我需要指出一个更聪明的方法,所以欢迎所有的建议。
我在这里找到了一个简单的解决方案qazxsw poi,这个代码来自Michael Anderson,它在单个线程中工作。
Executing periodic actions in Python [duplicate]