Как планировать разные задачи в разное время в бесконечной программе - PullRequest
0 голосов
/ 10 мая 2018

Я предвосхищу это, говоря, что я не продвинутый программист, и у меня есть только написанные программы, которые запускаются последовательно и завершаются. Теперь я хотел бы написать скрипт на python, который я запустил, и он будет запускать функцию каждые 5 минут, а другую функцию - каждые 10 минут и делать это бесконечно долго. Вот некоторый псевдокод:

def RunMeEvery5min:
    do something

def RunMeEvery10min:
    do something

while True:
    every 5 minutes run RunMeEvery5min
    every 10 minutes run RunMeEvery10min
    do this forever until I kill the program

Так это поток? Это действительно не имеет значения, выстраиваются ли задачи в соответствие или нет, поскольку они по сути не связаны. Рискну предположить, что это распространенный тип вопросов программирования, но я никогда не понимал, как это сделать, и даже не знаю, что искать. Любые полезные примеры или ссылки на основные учебники будут очень оценены!

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы можете использовать sched из стандартной библиотеки Python.

import sched, time
from datetime import datetime

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

def execute_every_05mins():
    print(datetime.now().strftime("%H:%M:%S"))
    scheduler.enter(300, 0, execute_every_05mins, ())

def execute_every_10mins():
    print(datetime.now().strftime("%H:%M:%S"))
    scheduler.enter(600, 0, execute_every_10mins, ())

if __name__ == "__main__":
    scheduler.enter(0, 0, execute_every_05mins, ())
    scheduler.enter(0, 0, execute_every_10mins, ())
    scheduler.run()
0 голосов
/ 10 мая 2018

Может быть, это вам поможет https://github.com/dbader/schedule

import schedule
import time

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

schedule.every(10).minutes.do(job)

while True:
     schedule.run_pending()
     time.sleep(1)
...