2017-04-15 2 views
1

スケジュールパッケージをPythonで使用する場合、特定の時間にタスクを開始してから10秒ごとに実行するようにスケジュールを設定します。私はschedule.every(10).seconds.do(x)を使って10秒ごとにタスクを実行することができました。また、schedule.every().day.at('13:25').do(x)を使用して、設定した時間に実行するようにしました。しかし、どうすればこれらをまとめることができますか?私は次のようにそれらを結合しようとしたが、私はただ、追加のジョブをスケジュールし、それを呼び出すために、あなたのメインループを使用して、あなたの仕事の中からrun_pending()を呼び出さないでください特定の時刻からn秒ごとに実行するスケジューリングタスク

import schedule 
import time 


def test(): 
    print('Hello, World!') 

def sched_job(): 
    schedule.every(10).seconds.do(test) 

    while True: 
     schedule.run_pending() 
     time.sleep(1) 

schedule.every().day.at('13:56').do(sched_job) 

while True: 
    schedule.run_pending() 
    time.sleep(1) 

sched_job() 
+0

(http://stackoverflow.com/questions/26774186/looping-at-a [信号サンプリングのために高精度に一定の速度でループ]の可能な重複:ここ

が変更されたコードであります信号サンプリング用の高精度の定格レート) –

答えて

1

RecursionError: maximum recursion depth exceededを得ました。コード内で変更する必要があるのは、sched_job()while Trueブロックを削除することだけです。また、所定の時刻に翌日に10秒ごとに第2のスケジュールを作成しないようにするため、一度実行すると直ちに外注ジョブをキャンセルする必要があります。 schedule.CancelJobを返すことでこれを行うことができます。

import schedule 
import time 

def test(): 
    print('Hello, World!') 

def sched_job(): 
    schedule.every(10).seconds.do(test) 
    return schedule.CancelJob 

schedule.every().day.at('13:56').do(sched_job) 

while True: 
    schedule.run_pending() 
    time.sleep(1) 
関連する問題