Python 每隔几秒安排一个函数 运行
Python schedule a function to run every few seconds
我是 python 的新手,我有一个 python 代码,其中包含 3 个函数。我想在每 X 秒后 运行 这三个功能。我正在使用 APScheduler 包和 add_job 方法。当我实现一个功能时,我看到一条警告消息说“已跳过:达到 运行ning 实例的最大数量 (1)”。那么,当我使用 add_job 方法安排所有三个函数时会发生什么?
代码看起来像这样
scheduler1 = APScheduler()
scheduler2 = APScheduler()
scheduler3 = APScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
scheduler1.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler.start()
scheduler2.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler.start()
scheduler3.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler.start()
使用上述类型的代码,我能否实现一个调度程序 运行在后台执行三个作业并且所有这些作业每 5 秒 运行 一次?
首先,您的代码没有任何问题,只是对象名称的愚蠢输入错误,而且显然没有优化。
以下是您修复拼写错误后的版本
from apscheduler.schedulers.background import BackgroundScheduler
from time import sleep
scheduler1 = BackgroundScheduler()
scheduler2 = BackgroundScheduler()
scheduler3 = BackgroundScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
scheduler1.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler1.start()
scheduler2.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler2.start()
scheduler3.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler3.start()
while True:
sleep(1)
我添加了额外的睡眠功能来阻止程序被杀死并测试定时器是否工作,它工作正常
以下版本是您代码的优化形式
from apscheduler.schedulers.background import BackgroundScheduler
from time import sleep
scheduler = BackgroundScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
scheduler.add_job(id='Scheduled task 1', func=fun1, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task 2', func=fun2, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task 3', func=fun3, trigger='interval', seconds=5)
scheduler.start()
while True:
sleep(1)
使用单个调度程序对象 运行 指定时间段后的所有功能。
这个有用吗?
import time
scheduler = APScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
while True:
scheduler.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler.start()
time.sleep(20)
它应该 运行 直到你按下 Ctrl+c
你也可以这样试试
import time
scheduler = APScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
scheduler.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler.start()
if __name__ == '__main__':
while True:
time.sleep(20)
通过这种方式,您只需将作业添加到调度程序一次,然后 运行 开始循环一遍又一遍。
我是 python 的新手,我有一个 python 代码,其中包含 3 个函数。我想在每 X 秒后 运行 这三个功能。我正在使用 APScheduler 包和 add_job 方法。当我实现一个功能时,我看到一条警告消息说“已跳过:达到 运行ning 实例的最大数量 (1)”。那么,当我使用 add_job 方法安排所有三个函数时会发生什么?
代码看起来像这样
scheduler1 = APScheduler()
scheduler2 = APScheduler()
scheduler3 = APScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
scheduler1.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler.start()
scheduler2.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler.start()
scheduler3.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler.start()
使用上述类型的代码,我能否实现一个调度程序 运行在后台执行三个作业并且所有这些作业每 5 秒 运行 一次?
首先,您的代码没有任何问题,只是对象名称的愚蠢输入错误,而且显然没有优化。
以下是您修复拼写错误后的版本
from apscheduler.schedulers.background import BackgroundScheduler
from time import sleep
scheduler1 = BackgroundScheduler()
scheduler2 = BackgroundScheduler()
scheduler3 = BackgroundScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
scheduler1.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler1.start()
scheduler2.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler2.start()
scheduler3.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler3.start()
while True:
sleep(1)
我添加了额外的睡眠功能来阻止程序被杀死并测试定时器是否工作,它工作正常
以下版本是您代码的优化形式
from apscheduler.schedulers.background import BackgroundScheduler
from time import sleep
scheduler = BackgroundScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
scheduler.add_job(id='Scheduled task 1', func=fun1, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task 2', func=fun2, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task 3', func=fun3, trigger='interval', seconds=5)
scheduler.start()
while True:
sleep(1)
使用单个调度程序对象 运行 指定时间段后的所有功能。
这个有用吗?
import time
scheduler = APScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
while True:
scheduler.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler.start()
time.sleep(20)
它应该 运行 直到你按下 Ctrl+c
你也可以这样试试
import time
scheduler = APScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
scheduler.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler.start()
if __name__ == '__main__':
while True:
time.sleep(20)
通过这种方式,您只需将作业添加到调度程序一次,然后 运行 开始循环一遍又一遍。