Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan modul jadual dalam Python untuk melaksanakan tugas berjadual

Cara menggunakan modul jadual dalam Python untuk melaksanakan tugas berjadual

WBOY
WBOYke hadapan
2023-04-18 14:38:172147semak imbas

Ujian pantas

Mari kita lihat kes berikut dahulu. melalui Kod berikut

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()

Seterusnya, kami menggunakan kaedah

untuk melaksanakan operasi tugasan yang dijadualkan Parameternya ialah masa tunda, keutamaan tugas, fungsi pelaksanaan khusus dan parameter dalam fungsi pelaksanaan. Kod seperti di atas akan melaksanakan fungsi
import sched

scheduler = sched.scheduler()

enter() selepas kelewatan selama 5 saat Sudah tentu, jika masa kelewatan adalah sama, kita boleh menetapkan keutamaan pelaksanaan tugas untuk menentukan susunan kaedah fungsi. dijalankan, contohnya Kod berikut say_hello()

adalah seperti kod di atas Walaupun masa tunda adalah sama, keutamaan kaedah

jelas lebih rendah daripada kaedah
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()
, jadi. yang terakhir akan dilaksanakan terlebih dahulu.

say_hello()Penggunaan lanjutansay_hello_2()

Selain melambatkan pelaksanaan fungsi, kami juga boleh membuatnya dilaksanakan berulang kali Secara khusus, kodnya adalah seperti berikut

Di sini kami. buat yang baharu

Fungsi tersuai memanggil kaedah
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()
untuk melaksanakan fungsi

yang ditakrifkan sebelum ini sekali setiap 5 saat repeat_task() scheduler.enter() Laksanakan tugas pada masa tetap say_hello()

Pada masa yang sama masa, kita juga boleh membiarkan tugasan dilaksanakan pada masa yang ditentukan Pelaksanaan masa, kaedah

digunakan di sini, kodnya adalah seperti berikut

scheduler.entertabs() Kami memasukkan parameter untuk melaksanakan tugas di masa yang ditentukan, iaitu, 5 saat dari sekarang

import sched
import time

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

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

# 指定时间执行任务
specific_time = time.time() + 5  # 距离现在的5秒钟之后执行
scheduler.enterabs(specific_time, 1, say_hello, ())

scheduler.run()
Laksanakan berbilang tugas

Di sini kita masih memanggil kaedah

untuk menjalankan berbilang tugas, kodnya adalah seperti berikut

enter()Dua fungsi ditakrifkan di sini,

dan
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()
mengandungi logik pelaksanaan yang sama, mencetak "Hello, world!", kemudian

dilaksanakan selepas dua saat dan task_one dilaksanakan selepas 5 saat . Keutamaan pelaksanaan kedua-duanya adalah sama. task_twotask_one()Laksanakan tugas yang berbeza dengan keutamaan yang berbezatask_two()

Kali ini kami memberikan keutamaan yang berbeza untuk

dan

Lihatlah hasil pelaksanaan seperti berikut

task_one()outputtask_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()
Task One - Hello, world!

Task Two - Hello, world!

Kod di atas akan dijalankan selepas jeda dua saat
fungsi, kemudian jeda selama 3 saat dan kemudian laksanakan fungsi

Tugas berjadual ditambah kaedah pembatalan task_one()task_two() Kami menambah kaedah pembatalan pada tugas yang dijadualkan, kodnya adalah seperti berikut

Kami membatalkan kaedah

yang akan dilaksanakan selepas dua saat Pada akhirnya, hanya kaedah

dilaksanakan dan "Task Two - Hello, world!"
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()

Program Sandaran Pelaksanaan task_one()task_two() Mari kita tulis skrip sandaran untuk membuat sandaran fail pada masa yang ditetapkan setiap hari Kodnya adalah seperti berikut

Kami melaksanakannya melalui. Kaedah

dalam modul

Salin fail, dan kemudian laksanakannya tepat pada masanya pada jam 1 setiap hari
import sched
import time
import shutil

def backup_files():
    source = '路径/files'
    destination = '路径二'
    shutil.copytree(source, destination)

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

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

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

schedule_backup()

Laksanakan program untuk pengedaran e-mel berjadualshutilcopytree()Akhir sekali, kami akan laksanakan program untuk pengedaran e-mel berjadual Kodnya adalah seperti berikut

Atas ialah kandungan terperinci Cara menggunakan modul jadual dalam Python untuk melaksanakan tugas berjadual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam