我有以下代码:
import usbtmc
#import matplotlib.pyplot as plot
from apscheduler.schedulers.background import BlockingScheduler
instr = usbtmc.Instrument(0x0699, 0x03a6)
print instr.ask("*IDN?")
sched = BlockingScheduler()
def TrigFreq():
print instr.ask("TRIG:MAI:FREQ?")
sched.add_job( TrigFreq, 'interval', seconds=3, max_instances=10 )
sched.start()
即。我希望以3秒的间隔调用函数TrigFreq
10次。但它永远不会停止。我究竟做错了什么?
答案 0 :(得分:1)
是你的触发器,使用interval
将永远运行。 max_instances仅告诉您可以拥有多少并发作业。
APScheduler有三种类型的触发器:
date
interval
cron
interval和cron永远重复,date是给定日期的一次性。
如果你想要一个触发10次然后停止的触发器,那么你可以根据SimpleTrigger
或IntervalTrigger
编写一个自定义触发器,它会跟踪一个计数器,以便它在计数后停止触发用完了。
请参阅https://apscheduler.readthedocs.io/en/latest/extending.html
答案 1 :(得分:0)
您只需要添加一个参数即可在指定的日期和时间停止作业。因此像这样传递参数end_date
。
import usbtmc
#import matplotlib.pyplot as plot
from apscheduler.schedulers.background import BlockingScheduler
instr = usbtmc.Instrument(0x0699, 0x03a6)
print instr.ask("*IDN?")
sched = BlockingScheduler()
def TrigFreq():
print instr.ask("TRIG:MAI:FREQ?")
sched.add_job( TrigFreq, 'interval', seconds=3, max_instances=10, end_date='2014-06-15 11:00:00')
sched.start()