max_instances在APSchedulers中的含义是什么

时间:2017-05-23 06:15:14

标签: python apscheduler

我有以下代码:

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次。但它永远不会停止。我究竟做错了什么?

2 个答案:

答案 0 :(得分:1)

是你的触发器,使用interval将永远运行。 max_instances仅告诉您可以拥有多少并发作业。

APScheduler有三种类型的触发器: date interval cron

interval和cron永远重复,date是给定日期的一次性。 如果你想要一个触发10次然后停止的触发器,那么你可以根据SimpleTriggerIntervalTrigger编写一个自定义触发器,它会跟踪一个计数器,以便它在计数后停止触发用完了。

请参阅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()

来源:From Apscheduler 3.6 documentation