python如何在每天的特定时间运行函数,但也可以终止

python如何在每天的特定时间运行函数,但也可以终止,python,timer,scheduled-tasks,scheduler,Python,Timer,Scheduled Tasks,Scheduler,我是新来探索如何在python中实现这一点的。我想做的是在每个工作日的特定时间运行一个函数,例如14:55,中国股市收盘前5分钟。此函数将从股票市场数据馈送API中提取一些数据,并进行一些简单的计算以生成信号(-1表示做空,+1表示做多,0表示什么都不做)。我现在还没有发出交易的信号。我只是每天将信号保存到本地文件中。因此,我可能能够收集信号2周或任何时候我想停止这个调度程序 我注意到,APScheduler模块经常被建议使用。但是我试过了,没有找到办法让调度器在两周后停止运行。我只想办法设置一

我是新来探索如何在python中实现这一点的。我想做的是在每个工作日的特定时间运行一个函数,例如14:55,中国股市收盘前5分钟。此函数将从股票市场数据馈送API中提取一些数据,并进行一些简单的计算以生成信号(-1表示做空,+1表示做多,0表示什么都不做)。我现在还没有发出交易的信号。我只是每天将信号保存到本地文件中。因此,我可能能够收集信号2周或任何时候我想停止这个调度程序

我注意到,
APScheduler
模块经常被建议使用。但是我试过了,没有找到办法让调度器在两周后停止运行。我只想办法设置一个调度程序,让它运行,可能每10分钟运行一次,但它只会每10分钟运行一个指定的功能,不能通过编程停止,只能通过按
Ctrl+C
?例如,我想每10分钟运行一个函数6次,在
APScheduler
中,我没有看到指定“6次”参数。或者我想每10分钟运行一次函数,直到1小时后。我也没有看到“1小时后”或“16:30”的论点。怎么做

目前,我是这样做的:

def test_timer():
    '''
    Uses datetime module.
    '''
    running = 1
    stop_time = datetime.now() + timedelta(seconds=60)
    while running:

        print('I\'m working...')
        time.sleep(5)
        running = datetime.now() < stop_time

    print('Goodbye!')
def test_timer():
'''
使用日期时间模块。
'''
运行=1
stop_time=datetime.now()+timedelta(秒=60)
运行时:
打印('我正在工作…')
时间。睡眠(5)
running=datetime.now()

编辑:我正在Windows 10中使用python 3.6。

对于Linux中的crontab或Windows中的任务调度器来说,这似乎是个问题。

试试这个例子

from datetime import datetime

from apscheduler.schedulers.background import BackgroundScheduler


def job_function():
    print("Hello World")

sched = BackgroundScheduler()

# Schedule job_function to be called every 1 second
# FIXME: Do not forget to change end_date to actual date
sched.add_job(job_function, 'interval', seconds=1, end_date="2017-09-08 12:22:20")

sched.start()
更新#1

from apscheduler.schedulers.background import BackgroundScheduler

def job_function():
    print("Hello World")

# Here, you can generate your needed days
dates = ["2017-09-08 13:30:20", "2017-09-08 13:31:20", "2017-09-08 13:32:20"]
sched = BackgroundScheduler()                      

for date in dates:
    sched.add_job(job_function, "date", next_run_time=date)

sched.start()

如果您使用的是linux,那么一个简单的方法就是使用crontab,它将在您需要时运行您的代码it@SquickLol问题从不包括
OS
definition@dsgdfg这就是为什么我说“如果”你是对的,但我说的是@StayFoolish我不熟悉高级Python调度程序。但是:在他们的文档中(发现:APScheduler有三个内置的调度系统,您可以使用:-Cron风格的调度(具有可选的开始/结束时间)-基于间隔的执行(以偶数间隔运行作业,具有可选的开始/结束时间)-一次性延迟执行(在设定的日期/时间运行作业一次)所以它提供了停止时间,不是吗?关于mac os??MacOS上有crontab,谢谢,我没有注意到我可以添加
end_date
参数。有没有办法指定计划程序在每个工作日运行?或者运行9次。