python apscheduler 暂停和恢复任务

在网上搜了下,都是直接转载的官方文档https://apscheduler.readthedocs.io/en/3.x/userguide.html#pausing-and-resuming-jobs
在这里插入图片描述
因为我想暂停指定任务,所以用的第二个方法。试了下直接报错:TypeError: pause_job() missing 1 required positional argument: ‘self’
看来BaseScheduler需要先实例化,但是我打算用调度器BlockingScheduler,难道BlockingScheduler没有相关方法吗?去看了下源码,原来BlockingScheduler是继承的BaseScheduler,就是说实例化的BlockingScheduler可以直接调用相关方法。
例子:

from apscheduler.schedulers.blocking import BlockingScheduler
import time
import datetime

def job_a():
    print('测试')

def job_b():
    # 暂停id为a的任务
    scheduler.pause_job(job_id = 'a')
    for i in range(10):
        print(i)
        time.sleep(5)
    # 恢复id为a的任务
    scheduler.resume_job(job_id = 'a')

if __name__ == '__main__':
    scheduler = BlockingScheduler()
    scheduler.add_job(job_a, 'interval', seconds = 5, id = 'a')
    scheduler.add_job(job_b, 'date', run_date = datetime.datetime.now() + datetime.timedelta(seconds = 20), id = 'b')
    scheduler.start()

又去看了下官方文档,发现有BaseScheduler的说明,看来有时间还是应该先看官方文档啊
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中,可以使用多线程或协程来实现暂停恢复运行代码的功能。下面分别介绍这两种方式的实现方法。 ## 使用多线程 使用多线程可以在一个线程中暂停执行代码,而在另一个线程中恢复执行。具体实现方法如下: ``` import threading import time flag = True # 控制暂停恢复的标志 def func(): while True: if flag: print("执行中...") time.sleep(1) t = threading.Thread(target=func) t.start() # 暂停执行 flag = False print("暂停执行...") time.sleep(3) # 恢复执行 flag = True print("恢复执行...") ``` 在上面的代码中,我们创建了一个新的线程`t`,并在其中定义了一个函数`func`,该函数会不断地执行`print`和`time.sleep`函数。同时,我们定义了一个标志`flag`,当`flag`为`True`时表示可以执行,为`False`时表示需要暂停。 在主线程中,我们首先将`flag`设置为`False`,表示需要暂停执行。然后等待3秒钟后,将`flag`设置为`True`,表示恢复执行。 ## 使用协程 使用协程可以在一个函数中暂停执行代码,而在另一个函数中恢复执行。具体实现方法如下: ``` import time def func(): while True: print("执行中...") yield time.sleep(1) f = func() # 暂停执行 print("暂停执行...") next(f) time.sleep(3) # 恢复执行 print("恢复执行...") next(f) ``` 在上面的代码中,我们定义了一个生成函数`func`,该函数会不断地执行`print`和`time.sleep`函数,并使用`yield`语句暂停执行。同时,我们创建了一个生成对象`f`,并通过调用`next`函数来启动`func`的执行。 在主函数中,我们首先调用`next(f)`,将`func`的执行暂停。然后等待3秒钟后,再次调用`next(f)`,将`func`的执行恢复。 需要注意的是,在使用协程时需要使用`yield`语句来暂停执行,否则代码会一直执行而无法暂停

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值