详解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


猜你喜欢
- 1. 设置fomat格式,如下: # 取前5个字符,跳过4个字符华,再取3个字符 format = '5s 4x 3s' 2
- 方法一使用findspark使用pip安装findspark:pip install findspark在py文件中引入findspark:
- 本文主要研究的是python读取jpg格式图片并显示为16进制的相关内容,具体如下。代码:>>> aaa = open(&
- 本文实例为大家分享了python实现剪切功能的具体代码,供大家参考,具体内容如下#!/usr/bin/env python#coding:
- 文件的存储方式在计算机中,文件是以 二进制的方式保存在磁盘上的文本文件和二进制文件文本文件可以使用文本编辑软件查看本质上还是二进制文件二进制
- 混淆矩阵 混淆矩阵(Confusion Matrix)是机器学习中用来总结分类模型预测结果的一
- 最近写项目需要画出应用程序调用链的网路拓扑图,完全自己写需要花费些时间,那么首先想到的是echarts,但echarts的自定义写法写起来非
- 前言从层次上来看,对象的复制可以简单地分为浅复制和深复制,顾名思义,浅复制是指只复制一层对象的属性,不会复制对象中的对象的属性,对象的深复制
- 一、打开/关闭文件1、对文件操作时首先要打开文件,打开文件用 fopen()函数,语法是:fopen(filename,mode,inclu
- 前言前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片。这样每次调用的时候
- 并行发送sh命令pbsh.py#!/usr/bin/python# -*- coding: UTF-8 -*-import paramiko
- 写在最前面:我在研究机器学习的过程中,给的数据集是手写数字图片被处理后的由0,1表达的txt文件,今天写一写关于图片转化为二进制txt文件的
- Django中间件在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方
- 一、前言我们需要分析某句话,就必须检测该条语句中的词语。一般来说,一句话肯定包含多个词语,它们互相重叠,具体输出哪一个由自然语言的切分算法决
- 一般现今ASP木马常通过以下四点来操作服务器,所以我们只要将一下四处设置好就能从一 前使用IIS服务器的站长很多,特别是对于ASP网站来说,
- 字典获取最大和最小value对应的keymy_dict = {'x':500, 'y':5874, '
- DataLoader完整的参数表如下:class torch.utils.data.DataLoader( dataset, batch_s
- 目录一、概念描述二、序列的可迭代性三、经典的迭代器模式四、生成器也是迭代器五、实现惰性迭代器六、使用生成器表达式简化惰性迭代器总结一、概念描
- 概览(循环方式 - 常用)formapforEachfilter声明遍历的数组和异步方法声明一个数组:??const skills = [&
- MNIST是一个非常有名的手写体数字识别数据集,TensorFlow对MNIST数据集做了封装,可以直接调用。MNIST数据集包含了6000