使用apscheduler [duplicate]以固定间隔读取文件

问题描述 投票:0回答:1

这个问题在这里已有答案:

我想逐行读取文件并以固定的间隔输出每一行。

该脚本的目的是重放一些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倍的重复感觉它可能不仅仅是巧合。

通常当我遇到这样的问题时,这意味着我走向错误的方向,我需要指出一个更聪明的方法,所以欢迎所有的建议。

python-3.x file-io apscheduler
1个回答
1
投票

我在这里找到了一个简单的解决方案qazxsw poi,这个代码来自Michael Anderson,它在单个线程中工作。

Executing periodic actions in Python [duplicate]
© www.soinside.com 2019 - 2024. All rights reserved.