4 พฤษภาคม 2558

Published 5/04/2558 by with 0 comment

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

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

  1. ใช้ไลบรารี sched ของ python

  2. ใช้โมดูล sched






ไลบรารี sched ใน Python


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

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

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

  • คำสั่งสร้าง Scheduler Objects

    [python]sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep)[/python]

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

  • สร้าง event ใหม่ให้กับตารางเวลา

    [python]scheduler.enterabs(เวลา, ลำดับความสำคัญ, การกระทำ, argument=(), kwargs={})[/python]


  • กำหนดการหน่วงเวลาในหน่วยวินาที ให้กับ event ในตารางเวลา

    [python]scheduler.enter(การหน่วงเวลา, ลำดับความสำคัญ, การกระทำ, argument=(), kwargs={})[/python]


  • เอา event ออกจากคิว

    [python]scheduler.cancel(event)[/python]


  • คำสั่งเช็คว่ามีคิวในตารางเวลาหรือไม่

    [python]scheduler.empty()[/python]

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

  • รัน event ในตารางเวลาทั้งหมด

    [python]scheduler.run()[/python]


  • แสดงคิวในตารางเวลา

    [python]scheduler.queue[/python]

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


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

[python]
>>> 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
[/python]





โมดูล schedule



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

  • รองรับทั้ง Python 2 และ Python 3

  • ใช้ MIT License


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

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

[python]
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)
[/python]

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

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

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

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