执行周期性任务

sched模块是一个通用的事件调度程序,可以对任务进行延迟调度,基于此,可以用它来实现周期性任务。

# coding:utf8
import time
import sched # 初始化scheduler类
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。
s = sched.scheduler(time.time, time.sleep) # 被周期性调度的任务
def task():
print("run time: {}".format(int(time.time()))) def perform(inc):
s.enter(inc, 0, perform, (inc,))
task() def main(inc=3):
s.enter(0, 0, perform, (inc,))
s.run() if __name__ == "__main__":
main()

执行结果为:

>>> run time:
>>> run time:
>>> run time:
>>> run time:
>>> ......

任务每隔3s执行一次,周期性执行。

s.enter()方法用来加入调度事件,即将任务加入到队列中,它有四个参数,分别为:间隔时间、优先级(为两个被调度在相同时间执行的函数定序,数字越小,优先级越高)、被调用触发的函数、函数的参数(参数放在元组中,当只有一个参数时,写为(parm,))

s.run()用来执行队列中的任务。

执行定时任务

当单纯执行定时任务时,可以是这样:

# coding:utf8
import time
import sched s = sched.scheduler(time.time, time.sleep) def print_time(task_id):
print("#{} run time: {}".format(task_id, int(time.time()))) def print_some_times():
print(int(time.time()))
s.enter(10, 1, print_time, (0,))
s.enter(5, 2, print_time, (1,))
s.enter(5, 1, print_time, (2,))
s.run()
print(int(time.time())) if __name__ == "__main__":
print_some_times()

执行结果为:

>>>
>>> # run time:
>>> # run time:
>>> # run time:
>>>

可以看到,执行总耗时为10s,执行开始后5s,1号和2号任务同时到达执行时间,由于2号任务的优先级高先执行,后面1号任务执行,10s后,0号任务执行。

python使用sched模块执行周期性任务和定时任务的更多相关文章

  1. python 利用python的subprocess模块执行外部命令,获取返回值

    有时执行dos命令需要保存返回值 需要导入库subprocess import subprocess p = subprocess.Popen('ping www.baidu.com', shell= ...

  2. Python的sched模块

    我们经常需要定时的执行某个任务,在Linux下我们有强大的crontab,但是在Python这个粒度(定时执行函数),如何处理呢?除了第三方的模块外,标准库为我们提供了sched模块和Timer类. ...

  3. python的subprocess模块执行shell命令

    subprocess模块可以允许我们执行shell命令 一般来说,使用run()方法就可以满足大部分情况 使用run执行shell命令 In [5]: subprocess.run('echo &qu ...

  4. [Python] 利用commands模块执行Linux shell命令

    http://blog.csdn.net/dbanote/article/details/9414133 http://zhou123.blog.51cto.com/4355617/1312791

  5. Python标准库笔记(5) — sched模块

    事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接 ...

  6. python:Asyncio模块处理“事件循环”中的异步进程和并发执行任务

    python模块Asynico提供了管理事件.携程.任务和线程的功能已经编写并发代码的同步原语. 组成模块: 事件循,Asyncio 每个进程都有一个事件循环. 协程,子例程概念的泛化,可以暂停任务, ...

  7. Python标准库之sched模块介绍

    sched——通用时间调度器 sched模块实现了一个通用事件调度器,在调度器类使用一个延迟函数等待特定的时间,执行任务.同时支持多线程应用程序,在每个任务执行后会立刻调用延时函数,以确保其他线程也能 ...

  8. python定时任务-sched模块

    通过sched模块可以实现通过自定义时间,自定义函数,自定义优先级来执行函数. schedule = sched.scheduler( time.time,time.sleep) schedule是一 ...

  9. Python中使用os模块执行远程命令

    1. 使用os模块远程执行命令 服务端代码 1 import socket 2 import os 3 4 sh_server = socket.socket() #创建一个socket对象 5 sh ...

随机推荐

  1. LG5357 「模板」AC自动机(二次加强版) AC自动机+fail树

    问题描述 LG5357 题解 不是fail树的AC自动机复杂度是假的. 把AC自动机搞出来,建立Trie树,树上爆搜一遍就好了. \(\mathrm{Code}\) #include<bits/ ...

  2. Tiling Terrace CodeForces - 1252J(dp、贪心)

    Tiling Terrace \[ Time Limit: 1000 ms\quad Memory Limit: 262144 kB \] 题意 给出一个字符串 \(s\),每次可以选择三种类型来获得 ...

  3. 5.Vue的组件

    1.什么是组件 组件是可复用的Vue实例,也就是一组可以复用的模版,类似JSTL的自定义标签. 你可能会有页头.侧边栏.内容区等组件,每个组件又包含了其它的像导航链接.博文之类的组件. 2.第一个Vu ...

  4. uuid模块

    UUID即通用唯一标识符,对于所有的UUID它可以保证在空间和时间上的唯一性.它是通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成ID的唯一性,有着固定的大小(128 bit).它的唯一性 ...

  5. python cookbook3

    1.算GC含量 def validate_base_sequence(base_sequence, RNAflag = False): #判断序列是否只含有A.T.G.C.U seq = base_s ...

  6. python运维开发常用模块(二)IPy

    1.安装 IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直 接影响路由协议算法的效率,包括网络性能.可扩展性等方面,在这个 过程当中,免不了要计算大量的IP地址,包括网段.网络掩码.广播地 ...

  7. 【layui】设置select只向下展开

    加css .layui-form-selectup dl { bottom: auto; }

  8. K8s 学习者绝对不能错过的最全知识图谱(内含 58个知识点链接)

    作者 | 平名 阿里服务端开发技术专家 导读:Kubernetes 作为云原生时代的“操作系统”,熟悉和使用它是每名用户的必备技能.本篇文章概述了容器服务 Kubernetes 的知识图谱,部分内容参 ...

  9. vue单页面引入CDN链接

    不想在index.html文件中全局引入CDN资源,那么如何在Vue单文件组件中引入?下面来瞅瞅~ 虚拟DOM创建 Vue 通过创建一个虚拟 DOM 来追踪自己要改变的真实 DOM 什么是虚拟DOM? ...

  10. WPF 精修篇 缩放ScaleTransform

    原文:WPF 精修篇 缩放ScaleTransform 缩放 ScaleTransform 参数 ScaleX  X轴缩小值 正常为1 ScaleY Y轴缩小值 正常为1 CenterY ,Cente ...