我们如何在每天下午15点30分的某个时间停止节目......?(它每1分钟运行一次)

问题描述 投票:-1回答:2

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

我想每2秒和3秒运行一次job1和job2,工作1和工作2应该在一天的9点30分开始......应该在晚上17点30分停止......!工作3 @ 17:31 pm每天一次..

import schedule
import time

def job1():
   print("I'm working...")
def job2():
   print("I'm not working...")
def job3():
   print("I'll not work...")

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


schedule.every().day.at("17:28").do(job3) #Once in a day

while True:
   schedule.run_pending()
   time.sleep(1)
python python-3.x scheduler
2个回答
0
投票

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

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

你可以在你想要的时候取消这份工作。所以你将有2个额外的工作,开始和停止其他工作。


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)
© www.soinside.com 2019 - 2024. All rights reserved.