4 พฤษภาคม 2558

Published พฤษภาคม 04, 2558 by with 0 comment

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

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

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

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




ไลบรารี 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)



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

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)