ホームページ  >  記事  >  バックエンド開発  >  Python で sched モジュールを使用してスケジュールされたタスクを実装する方法

Python で sched モジュールを使用してスケジュールされたタスクを実装する方法

WBOY
WBOY転載
2023-04-18 14:38:172147ブラウズ

ちょっとしたテスト

まず次のケースを見てみましょう。コードは次のとおりです

import sched
import time

def say_hello(name):
    print(f"Hello, world, {name}")

scheduler = sched.scheduler(time.time, time.sleep)

scheduler.enter(5, 1, say_hello, ("张三", ))
scheduler.run()

上記のコードの最初のステップは、次のコードを通じてタイマーをインスタンス化することです。

import sched

scheduler = sched.scheduler()

次に、enter() メソッドを使用して、スケジュールされたタスクの操作を実行します。パラメーターは、遅延時間、タスクの優先度、特定の実行関数、および実行関数です。パラメータ。上記のようなコードは、5 秒の遅延後に実行されます。 say_hello()Function

もちろん、遅延時間が等しい場合は、タスク実行の優先順位を設定して、 function メソッド たとえば、実行シーケンスは次のコードになります。

import sched
import time

def say_hello(name):
    print(f"Hello, world, {name}")

def say_hello_2(name):
    print(f"Hello, {name}")

scheduler = sched.scheduler(time.time, time.sleep)

scheduler.enter(5, 2, say_hello, ("张三", ))
scheduler.enter(5, 1, say_hello_2, ("李四", ))
scheduler.run()

上記のコードと同様、遅延時間は同じですが、明らかに say_hello() メソッドの優先度が高くなります。 say_hello_2 () メソッドよりも下位にあるため、後者が最初に実行されます。

高度な使用方法

関数の実行を遅らせるだけでなく、繰り返し実行させることもできます。具体的には次のようなコードです。

import sched
import time

def say_hello():
    print("Hello, world!")

scheduler = sched.scheduler(time.time, time.sleep)

def repeat_task():
    scheduler.enter(5, 1, say_hello, ())
    scheduler.enter(5, 1, repeat_task, ())

repeat_task()
scheduler.run()

ここで作成しました。新しいrepeat_task() カスタム関数、#scheduler.enter()メソッドを呼び出すと、以前に定義された#say_hello()関数##が1回ごとに実行されます。 5 秒 決まった時間にタスクを実行する

同時に、指定した時間にタスクを実行させることもできます。ここでは、

scheduler.entertabs()

メソッドを使用します。コードは次のとおりです<pre class="brush:py;">import sched import time def say_hello(): print(&quot;Hello, world!&quot;) scheduler = sched.scheduler(time.time, time.sleep) # 指定时间执行任务 specific_time = time.time() + 5 # 距离现在的5秒钟之后执行 scheduler.enterabs(specific_time, 1, say_hello, ()) scheduler.run()</pre>パラメータを使用すると、指定された時刻、つまり今から 5 秒後にタスクを実行できます。ここでも

enter()

メソッドを呼び出して複数のタスクを実行します。コードは次のとおりです。

import sched
import time

def task_one():
    print("Task One - Hello, world!")
    
def task_two():
    print("Task Two - Hello, world!")

scheduler = sched.scheduler(time.time, time.sleep)

# 任务一在两秒钟只有执行
scheduler.enter(2, 1, task_one, ())

# 任务二在五秒钟之后运行
scheduler.enter(5, 1, task_two, ())

scheduler.run()

ここでは 2 つの関数、

task_one

task_two# が定義されています。 ## は同じ実行ロジックを持ち、「Hello , world!」を出力すると、task_one()

は 2 秒後に実行され、

task_two() は 5 秒後に実行されます。両方の実行の優先順位は同じです。 異なる優先度で異なるタスクを実行する今回は、task_one()task_two()

に異なる優先度を与えます。実行結果は次のようになります。

import sched
import time

def task_one():
    print("Task One - Hello, world!")
    
def task_two():
    print("Task Two - Hello, world!")

scheduler = sched.scheduler(time.time, time.sleep)

# 优先级是1
scheduler.enter(2, 2, task_one, ())

# 优先级是2
scheduler.enter(5, 1, task_two, ())

scheduler.run()

output

タスク 1 - Hello, world!タスク 2 - Hello, world!

上記のコード2 秒の停止後に

task_one()
関数を実行し、3 秒の停止後に

task_two()
関数を実行します。

スケジュールされたタスク プラスキャンセル メソッド

スケジュールされたタスクにキャンセル メソッドを追加します。コードは次のとおりです。

import sched
import time

def task_one():
    print("Task One - Hello, world!")
    
def task_two():
    print("Task Two - Hello, world!")

scheduler = sched.scheduler(time.time, time.sleep)

# 任务一在两秒钟只有执行
task_one_event = scheduler.enter(2, 1, task_one, ())

# 任务二在五秒钟之后运行
task_two_event = scheduler.enter(5, 1, task_two, ())

# 取消执行task_one
scheduler.cancel(task_one_event)

scheduler.run()
2 秒後に実行される task_one()

メソッドをキャンセルします。

task_two()

メソッドは「タスク 2 - Hello, world!」を出力します

バックアップ プログラムを実行します

バックアップ スクリプトを作成しましょう毎日決まった時間にファイルをバックアップします コードは次のとおりです

import sched
import time
import shutil

def backup_files():
    source = &#39;路径/files&#39;
    destination = &#39;路径二&#39;
    shutil.copytree(source, destination)

def schedule_backup():
    # 创建新的定时器
    scheduler = sched.scheduler(time.time, time.sleep)

    # 备份程序在每天的1点来执行
    backup_time = time.strptime(&#39;01:00:00&#39;, &#39;%H:%M:%S&#39;)
    backup_event = scheduler.enterabs(time.mktime(backup_time), 1, backup_files, ())

    # 开启定时任务
    scheduler.run()

schedule_backup()
shutil

モジュールの

copytree()

メソッドを使用してファイルをコピーしますを実行し、毎日定刻に 1 時に実行します。Execute

定期的にメールを配信するプログラムを実行します

最後に、定期的にメールを配信するプログラムを実行します。コードは次のとおりですりー

以上がPython で sched モジュールを使用してスケジュールされたタスクを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。