我们如何在一天的某个时间@ 15:30pm停止某个程序…?(每1分钟运行一次)

时间:2019-02-08 08:58:23

标签: python python-3.x scheduler

任何人都可以帮助我获取以下条件的代码...

我想每2秒和3秒运行一次job1和job2, job1和job2应该一天@ 9:30am开始..应该停止@ 17:30pm ...! job3 @每天下午17:31一次。.

df3 = df1.merge(df2, how='left', indicator=True).query('_merge == "left_only"')[df1.columns]
df = pd.concat([df2, df3], ignore_index=True)

2 个答案:

答案 0 :(得分:0)

您可以将其包装到函数中,并在预定的时间内使用调度程序启动它

schedule.every(2).seconds.do(job1) #For Every 2 seconds
schedule.every(5).seconds.do(job2) #For Every 3 Seconds

您可以根据需要取消作业。因此,您将有2个额外的工作可以启动和停止其他工作。

答案 1 :(得分:0)

可能不是执行此操作的最佳方法,但是这样的方法应该可以工作。 (您显然可以将if语句扩展为仅包含工作日/不包括假期等。)

import datetime
import time


def job_a():
    print('a')

def job_b():
    print('b')

def job_3():
    print('3')



start_a = datetime.datetime.now()
wait_time_a = 2

start_b = datetime.datetime.now()
wait_time_b = 5

start_time = 9.30
end_time = 17.31

do_job_3 = False

while True:
    while datetime.datetime.now().hour + datetime.datetime.now().minute/100. > start_time \
        and datetime.datetime.now().hour + datetime.datetime.now().minute/100. < end_time:
            do_job_3 = True
            if (datetime.datetime.now() - start_a).seconds > wait_time_a:
                job_a()
                start_a += datetime.timedelta(seconds=wait_time_a)
            if (datetime.datetime.now() - start_b).seconds > wait_time_b:
                job_b()
                start_b += datetime.timedelta(seconds=wait_time_b)
            time.sleep(1)

    if do_job_3:
        do_job_3 = False
        job_3()

    time.sleep(1)
相关问题