如何在一个特定的时间停止一个程序第15天每天下午三点半…?(每1分钟运行一次)

2024-09-24 06:29:09 发布

您现在位置:Python中文网/ 问答频道 /正文

有谁能帮我得到以下条件的代码。。。你知道吗

我想每2秒和3秒运行一次job1和job2, 作业1和作业2应开始@9一天早上30点..而且应该停止@17:30点。。。! job3@17:31pm每日一次。。你知道吗

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)

Tags: importfortimedef作业notdoworking
2条回答

也许这不是最好的办法,但这样的办法应该行得通。(很明显,您可以扩展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)

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

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

你也可以在需要的时候取消工作。因此,你将有两个额外的工作开始和停止其他工作。你知道吗

相关问题 更多 >