详解Python如何轻松实现定时执行任务
作者:Python数据挖掘 发布时间:2022-02-02 16:44:42
标签:Python,定时,执行,任务
下面这个截图,就是使用 schedule 定时执行 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)
所需要的包就这么几个(ipywidgets 是为了显示进度条,就不多做介绍了),
pip install schedule papermill ipywidgets
下面分别介绍下各个包的用途。
schedule
从官方提供的例子可以看出,只要会基本的英语就能明白如何方便定时了
import schedule
import time
# 要执行的任务
def job():
print("I'm working...")
#每隔10s执行job
schedule.every(10).seconds.do(job)
#每隔10分钟执行job
schedule.every(10).minutes.do(job)
#每小时执行job
schedule.every().hour.do(job)
#在每天10:30分执行job
schedule.every().day.at("10:30").do(job)
#每5到10分钟(随机数)执行job
schedule.every(5).to(10).minutes.do(job)
#每星期一执行job
schedule.every().monday.do(job)
#每星期三13:15执行job
schedule.every().wednesday.at("13:15").do(job)
#每天欧洲阿姆斯特丹时区的12:42执行job
schedule.every().day.at("12:42", "Europe/Amsterdam").do(job)
#在每分钟的第17秒开始执行job
schedule.every().minute.at(":17").do(job)
def job_with_argument(name):
print(f"I am {name}")
#每10秒钟执行一次job_with_argument(带参数)
schedule.every(10).seconds.do(job_with_argument, name="Peter")
while True:
schedule.run_pending()
time.sleep(1)
更多应用可以看官方文档[1]。
如果你只是在 Python 代码里定时一个或者多个工作,你并不需要 papermill,使用 papermill,是为了可以方便地定时执行你的 Notebook。
papermill
papermill[2]是一个用于参数化、执行和分析 Jupyter Notebooks 的工具。
也许您有一份财务报告,您希望在一个月的第一天或最后一天或一年的开始或结束时使用不同的值运行,使用参数可以使这项任务更容易。你想运行一个 Notebook 并根据它的结果,选择一个特定的 Notebook 来运行吗?您现在可以以编程方式 执行工作流程,而无需手动从笔记本复制和粘贴到笔记本。
我们即可以像上面的例子那样以 API 的方式使用,也可以以命令行的方式来运行,例如, 运行本地input.ipynb,参数分别为alpha和l1_ratio把结果保存到 AWS 的 s3 上,
papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1
使用下面这段代码,我们可以把 notebook 中 print 输出转移输出到日志里,
from datetime import datetime
from datetime import timedelta
import logging, sys,re
#日志的名字以时间命名,方便查找
_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'
#日志的基本设置
logging.basicConfig(filename=filename, level=logging.DEBUG
, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger()
# 将print转移输出到日志中
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
0
投稿
猜你喜欢
- -crop参数是从一个图片截取一个指定区域的子图片.格式如下:convert -crop widthxheight{+-
- 选择一个合适的编辑器,比如notepad++、VS、eclipse、sublime text等,选中要集体缩进的代码块,按Tab:集体缩进(
- python爬虫模块PyQuery简介PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,
- 报表服务器数据库可以为一个或多个报表服务器实例提供内部存储。因为报表服务器数据库架构可能会因为推出新的 Reporting Services
- PyType_Type和PyBaseObject_TypePyObject和PyTypeObject内容的最后指出下图中对实例对象和类型对象
- 导言作为web开发人员,我们的生活围绕着数据操作。我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据。本文是研究在A
- 本周的豆知识分享就来深入研究一下window.event对象。请先看看下边的代码片断。 <button id=”btn”&g
- 在上篇文章给大家介绍了yii2搭建完美后台并实现rbac权限控制实例教程中完美实现了yii2的后台搭建和rbac权限控制,如果你还没有实现,
- 作者:bencalie 整理日期:2004年6月15日<xml id="users"> <u
- 一、JSP EL语言定义 E L(Expression
- xmlhttp,IE不支持overrideMimeType()方法,即使是IE7。 // Mozilla/Safari/
- django是 * 页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染
- 让我们看看如何在 Python 中复制数组。 有 3 种复制数组的方法:只需使用赋值运算符。浅拷贝深拷贝1 使用赋值运算符我们可以使用赋值运
- 利用图标工具(有很多)制作图标文件(favicon.ico)上传到网站所在的服务器的根目录下,这个文件必须是16*16大小的图标文件。当然,
- 内容摘要: 模拟网页下拉菜单中有几个比较关键的CSS属性:position、left、top、
- 先学会文件的读写!比如像以前在学校读书的时候,第一门编程课设计要求是制作学生管理系统。这就需要使用文件来处理(也可以用数据库,但是一般C语言
- 这篇文章主要介绍了通过实例了解Python str()和repr()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 本文实例讲述了Python列表计数及插入的用法。分享给大家供大家参考。具体如下:word=['a','b',
- 代码如下:'******************************************** '函数名:I
- 防止一般的采集以及小偷读取,加在顶部。同理,可以改造成JS脚本。下面的方法是通过选择同一IP的访问频率来达到防止采集的目的,就是可能也把搜索