微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Python 中有效地在特定分钟数后安排任务?

如何解决如何在 Python 中有效地在特定分钟数后安排任务?

我将如何在特定分钟数后安排任务? 例子:

schedule(32).do(job) # number of minutes,and random function to execute

我研究了 time.sleep 和 scheduler,但我听说 time.sleep 不是处理这些类型情况的最佳方法,调度程序会重复工作

解决方法

这是一种在 n 分钟后获得时间的方法

例如:

import schedule
import datetime

def job():
    print('Hello')
    print(datetime.datetime.now().strftime("%H:%M"))
    
    
def get_mins(m):
    return (datetime.datetime.now() + datetime.timedelta(minutes=m)).strftime("%H:%M")

t = get_mins(1)   # Get time after n mins.
print(t)
schedule.every().day.at(t).do(job)
while True:
    schedule.run_pending()
,

使用 Python 附带的库并使用几秒钟来加快演示速度。

schedule 需要一个时间和一个函数,然后启动一个线程,在这段时间内休眠,然后调用该函数:

import threading
import time
from datetime import datetime

def _schedule_worker(seconds,function):
    time.sleep(seconds)
    function()

def schedule(seconds,function):
    threading.Thread(target=_schedule_worker,args=(seconds,function)).start()

def work():
    print(datetime.now())

print(datetime.now())
schedule(1,work)
schedule(5,work)
schedule(8,work)
schedule(10,work)

输出:

2021-04-04 23:30:08.916058
2021-04-04 23:30:09.926058
2021-04-04 23:30:13.933824
2021-04-04 23:30:16.923825
2021-04-04 23:30:18.923826
,

试试 simple_scheduler。它允许您生成任意数量的作业:

from time import sleep
from simple_scheduler.recurring import recurring_scheduler

def wait(t):
    sleep(t)
    print(f"I waited {t} seconds!")

recurring_scheduler.add_job(target=wait,kwargs={"t":10},period_in_seconds=5)
recurring_scheduler.run()

上述包也适用(如上例所示)当重复时间 period 小于任务的执行时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。