Это не более эффективный способ для заданного интервала, но один из способов сделать это
Вы можете использовать python ' schedule модуль.
import schedule
def job():
"Write your job here "
if __name__=="__main__":
schedule.every().sunday.at("00:00").do(job)
while True:
schedule.run_pending()
Обновление: вышеуказанное программирование блокирует.
Для неблокирования вы можете использовать комбинацию потоков и расписания следующим образом.
import threading
import schedule
def job():
"""Your job here"""
def threaded(func):
job_thread = threading.Thread(target=func)
job_thread.start()
if __name__=="__main__":
schedule.every().sunday.at("00:00").do(threaded,job)
while True:
schedule.run_pending()
"""you can write your other tasks here"""
Эта программа создает другой поток для запланированной работы.