網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
詳解Python如何輕松實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)_python
作者:Python數(shù)據(jù)挖掘 ? 更新時(shí)間: 2022-11-30 編程語(yǔ)言下面這個(gè)截圖,就是使用 schedule 定時(shí)執(zhí)行 Notebook 的例子
import schedule
import time
import papermill as pmdef job():
pm.execute_notebook(
'input.ipynb',
'logs/oo.ipynb'
)
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
所需要的包就這么幾個(gè)(ipywidgets 是為了顯示進(jìn)度條,就不多做介紹了),
pip install schedule papermill ipywidgets
下面分別介紹下各個(gè)包的用途。
schedule
從官方提供的例子可以看出,只要會(huì)基本的英語(yǔ)就能明白如何方便定時(shí)了
import schedule
import time
# 要執(zhí)行的任務(wù)
def job():
print("I'm working...")
#每隔10s執(zhí)行job
schedule.every(10).seconds.do(job)
#每隔10分鐘執(zhí)行job
schedule.every(10).minutes.do(job)
#每小時(shí)執(zhí)行job
schedule.every().hour.do(job)
#在每天10:30分執(zhí)行job
schedule.every().day.at("10:30").do(job)
#每5到10分鐘(隨機(jī)數(shù))執(zhí)行job
schedule.every(5).to(10).minutes.do(job)
#每星期一執(zhí)行job
schedule.every().monday.do(job)
#每星期三13:15執(zhí)行job
schedule.every().wednesday.at("13:15").do(job)
#每天歐洲阿姆斯特丹時(shí)區(qū)的12:42執(zhí)行job
schedule.every().day.at("12:42", "Europe/Amsterdam").do(job)
#在每分鐘的第17秒開(kāi)始執(zhí)行job
schedule.every().minute.at(":17").do(job)
def job_with_argument(name):
print(f"I am {name}")
#每10秒鐘執(zhí)行一次job_with_argument(帶參數(shù))
schedule.every(10).seconds.do(job_with_argument, name="Peter")
while True:
schedule.run_pending()
time.sleep(1)
更多應(yīng)用可以看官方文檔[1]。
如果你只是在 Python 代碼里定時(shí)一個(gè)或者多個(gè)工作,你并不需要 papermill,使用 papermill,是為了可以方便地定時(shí)執(zhí)行你的 Notebook。
papermill
papermill[2]是一個(gè)用于參數(shù)化、執(zhí)行和分析 Jupyter Notebooks 的工具。
也許您有一份財(cái)務(wù)報(bào)告,您希望在一個(gè)月的第一天或最后一天或一年的開(kāi)始或結(jié)束時(shí)使用不同的值運(yùn)行,使用參數(shù)可以使這項(xiàng)任務(wù)更容易。你想運(yùn)行一個(gè) Notebook 并根據(jù)它的結(jié)果,選擇一個(gè)特定的 Notebook 來(lái)運(yùn)行嗎?您現(xiàn)在可以以編程方式 執(zhí)行工作流程,而無(wú)需手動(dòng)從筆記本復(fù)制和粘貼到筆記本。
我們即可以像上面的例子那樣以 API 的方式使用,也可以以命令行的方式來(lái)運(yùn)行,例如, 運(yùn)行本地input.ipynb,參數(shù)分別為alpha和l1_ratio把結(jié)果保存到 AWS 的 s3 上,
papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1
使用下面這段代碼,我們可以把 notebook 中 print 輸出轉(zhuǎn)移輸出到日志里,
from datetime import datetime
from datetime import timedelta
import logging, sys,re
#日志的名字以時(shí)間命名,方便查找
_date_start = (datetime.now() +timedelta(hours=0)).strftime('%Y-%m-%d %H:%M:%S')
xxx = re.sub(r'[-\ \:]','',_date_start)
filename=f'logs/{xxx}.log'
#日志的基本設(shè)置
logging.basicConfig(filename=filename, level=logging.DEBUG
, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger()
# 將print轉(zhuǎn)移輸出到日志中
sys.stderr.write = logger.error
sys.stdout.write = logger.info
參考資料
[1]官方文檔: https://schedule.readthedocs.io/
[2]papermill: https://github.com/nteract/papermill
原文鏈接:https://blog.csdn.net/qq_34160248/article/details/127480781
相關(guān)推薦
- 2022-10-05 帶你深度走入C語(yǔ)言取整以及4種函數(shù)_C 語(yǔ)言
- 2022-05-18 ASP.NET?MVC授權(quán)過(guò)濾器用法_實(shí)用技巧
- 2022-07-06 詳解C語(yǔ)言中sizeof如何在自定義函數(shù)中正常工作_C 語(yǔ)言
- 2022-08-07 Android?實(shí)現(xiàn)自定義折線圖控件_Android
- 2023-07-06 mybatis-plus 3.5.x Cannot resolve method ‘setUseDe
- 2022-12-12 C#中TextBox的橫線樣式及占位提示詳解_C#教程
- 2022-05-17 docker停止某個(gè)容器
- 2022-10-03 Objective-C之Category實(shí)現(xiàn)分類(lèi)示例詳解_IOS
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支