Skip to content

สร้างตารางเวลา scheduler ใน Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปสร้างตารางเวลา scheduler ใน Python กันครับ


บทความนี้ผมจะขอแนะนำ 2 วิธี ดังนี้

  1. ใช้ไลบรารี sched ของ python
  2. ใช้โมดูล sched

ไลบรารี sched ใน Python

ไลบรารีมาตรฐานตัวหนึ่งของ Python สำหรับใช้ทำ scheduler นั้นคือ ไลบรารี sched

ไลบรารี sched เป็นไลบรารีสำหรับทำ scheduler ใน Python 2 , Python 3

มีคำสั่งดังนี้

  • คำสั่งสร้าง Scheduler Objects
    sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep)

    เป็นการกำหนดอินเตอร์เฟซสำหรับ scheduling events โดย timefunc คือ เวลา ค่าเริ่มต้น คือ time.time ส่วน delayfunc คือ การหน่วงเวลา โดยมีอาร์กิวเมนต์ 0 หลังจากที่ event แต่ละ event ทำงานเพื่อให้มีโอกาสที่เทรดอื่นจะทำงานในการใช้งานแบบมัลติเธรดในโปรแกรม

  • สร้าง event ใหม่ให้กับตารางเวลา
    scheduler.enterabs(เวลา, ลำดับความสำคัญ, การกระทำ, argument=(), kwargs={})
  • กำหนดการหน่วงเวลาในหน่วยวินาที ให้กับ event ในตารางเวลา
    scheduler.enter(การหน่วงเวลา, ลำดับความสำคัญ, การกระทำ, argument=(), kwargs={})
  • เอา event ออกจากคิว
    scheduler.cancel(event)
  • คำสั่งเช็คว่ามีคิวในตารางเวลาหรือไม่
    scheduler.empty()

    คำสั่งนี้จะคืนค่า True หากไม่มีคิวในตารางเวลา

  • รัน event ในตารางเวลาทั้งหมด
    scheduler.run()
  • แสดงคิวในตารางเวลา
    scheduler.queue

    คำสั่งนี้จะคืนค่า list ออกมา

ตัวอย่างการใช้งาน

>>> import sched, time
>>> s = sched.scheduler(time.time, time.sleep)
>>> def print_time(a='default'):
...     print("From print_time", time.time(), a)
...
>>> def print_some_times():
...     print(time.time())
...     s.enter(10, 1, print_time)
...     s.enter(5, 2, print_time, argument=('positional',))
...     s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
...     s.run()
...     print(time.time())
...
>>> print_some_times()
930343690.257
From print_time 930343695.274 positional
From print_time 930343695.275 keyword
From print_time 930343700.273 default
930343700.276

โมดูล schedule

  • เป็นโมดูลสำหรับใช้สร้าง schedule ในมุมมองของมนุษย์ และมีการใช้งานง่ายกว่าใช้ไลบรารี sched ครับ
  • รองรับทั้ง Python 2 และ Python 3
  • ใช้ MIT License

สามารถติดตั้งได้โดยใช้คำสั่ง pip :

pip install schedule

การใช้งาน
สามารถใช้งานได้ง่าย ๆ ตามตัวอย่างนี้ครับ

import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).minutes.do(job) # สร้าง every ให้ทำงานตามฟังก์ชัน job ทุก ๆ 10 นาที
schedule.every().hour.do(job) # สร้าง every ให้ทำงานตามฟังก์ชัน job ทุก ๆ ชั่วโมง
schedule.every().day.at("10:30").do(job) # สร้าง every ให้ทำงานตามฟังก์ชัน job ทุก ๆ วัน ตามเวลาที่กำหนด
schedule.every().monday.do(job) # สร้าง every ให้ทำงานตามฟังก์ชัน job ทุกวันจันทร์
schedule.every().wednesday.at("13:15").do(job) # สร้าง every ให้ทำงานตามฟังก์ชัน job ทุกวันพุธ เวลา 13:15

while True:
    schedule.run_pending() # รันตารางเวลา
    time.sleep(1)

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories ไม่มีหมวดหมู่

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

1 thought on “สร้างตารางเวลา scheduler ใน Python

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *