python定时执行方法

1  time.sleep

import time

for i in range(5):

  print(i)

  time.sleep(10)

2 用shed

import time
import sched  

schedule = sched.scheduler ( time.time, time.sleep )  

def func(string1,float1):
    print("now is",time.time()," | output=",string1,float1)

print(time.time())
schedule.enter(2,0,func,("test1",time.time()))
schedule.enter(2,0,func,("test1",time.time()))
schedule.enter(3,0,func,("test1",time.time()))
schedule.enter(4,0,func,("test1",time.time()))
schedule.run()
print(time.time())

其中func中放要执行的函数,用schedule.enter加入要执行的函数,里面的第一个参数是延迟执行的时间,用sched.scheduler进行初始化

1512033155.9311035
now is 1512033157.9316308  | output= test1 1512033155.9311035
now is 1512033157.9316308  | output= test1 1512033155.9311035
now is 1512033158.9322016  | output= test1 1512033155.9311035
now is 1512033159.9316351  | output= test1 1512033155.9311035
1512033159.9316351
[Finished in 4.2s]

上面是执行结果,缺点是任务队列是阻塞型,即schedule里的任务不执行完,后面的主线程就不会执行

3  用threading里的timer,实现非阻塞型,即主线程要任务同时执行

import time
from threading import Timer  

def print_time( enter_time ):
    print "now is", time.time() , "enter_the_box_time is", enter_time  

print time.time()
Timer(5,  print_time, ( time.time(), )).start()
Timer(10, print_time, ( time.time(), )).start()
print time.time()  

执行结果:

1512034286.9443169
1512034286.9452875
now is 1512034291.9460146 enter_the_box_time is 1512034286.9443169
now is 1512034296.9461012 enter_the_box_time is 1512034286.9452875
[Finished in 10.2s]

可看出任务和主线程是同步执行,但是后3位又稍有不同,应该是python的多线程并非真正的多线程导致

每天某个时间定时执行任务:

import datetime
import time

def doSth():
    print(‘test‘)
    # 假装做这件事情需要一分钟
    time.sleep(60)

def main(h=0, m=0):
    ‘‘‘h表示设定的小时,m为设定的分钟‘‘‘
    while True:
        # 判断是否达到设定时间,例如0:00
        while True:
            now = datetime.datetime.now()
            # 到达设定时间,结束内循环
            if now.hour==h and now.minute==m:
                break
            # 不到时间就等20秒之后再次检测
            time.sleep(20)
        # 做正事,一天做一次
        doSth()

main()
时间: 2024-10-08 17:05:41

python定时执行方法的相关文章

使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员

一.项目需求 每周从A系统生成一张Excel报表,发送此报表给指定人员,相关人员依据此报表去完成后续的工作. 项目限制: 1.无法通过EDI系统交互的方式从后台读取数据 2.由于公司网络环境限制,不能使用SMTP发送邮件,比如,不能通过smtp.163.com发送邮件 二.解决方案 模拟人工操作,登录系统,输入相应查询条件,生成报表,保存后发送邮件给指定人员. 采用技术:采用Python 三.关键点 1.使用selenium模拟登录浏览器 '使用IE浏览器 driver.webdriver.Ie

Python定时执行脚本

最近测试hbase,老发现服务挂掉,自己不能及时发现,想了想,写了个脚本,让脚本每个小时执行一次,以便检测是否有服务挂掉,如果有服务挂掉,及时启动 import os import datetime class CheckService(object): def __init__(self): pass def getService(self): # service list service = ['Jps' ,'EmbeddedServer' ,'QuorumPeerMain' ,'NodeM

python定时执行任务

from apscheduler.scheduler import Scheduler import datetime # Start the scheduler sched = Scheduler() def job_function(): print "Hello World" , 'start job1 at: ', datetime.datetime.now() def job_f(): print "Hello World" , 'start job2 a

Python开发的3种命令执行方法

在python开发中,我们常常需要执行命令,修改相关信息.那对于初学者来说,python中如何执行命令呢?今天,小编就为大家分享3种python命令执行的方法. 1. 使用os.system("cmd") 在python中,使用os.system("cmd")的最大特点是,其执行时程序会打出cmd在linux上执行的信息. import os os.system("ls") 2. 使用Popen模块产生新的process Popen是现在pyth

最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件

今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写测试用例即可,其他模板可以套用的,希望帮助到大家. 目录 一.编写测试用例 二.执行测试用例,查找最新测试用例,自动发送测试报告 三.定时执行测试用例 3.1方案一:Windows任务计划 3.2方案二:Jenkins持续集成 四.成果验收 环境准备: 操作系统:Windows7 集成开发环境:ec

在Linux中定时执行一个程序的方法之at命令

/*********************************************************************  * Author  : Samson  * Date    : 04/29/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

jenkins执行python脚本的方法,和python版本的兼容性问题

在jenkins上打算运行一段python脚本,查到一些常用的方法,下面会介绍.还遇到了版本兼容性问题导致的怎么都执行不成功,最终试了各种版本,定位到兼容性问题,真是各种坑. 一般有三种方法:1.安装执行python的插件: Python Plugin,安装后在配置那里就可以看到以下的选项,可以在Script部分直接写python代码 2. 用Execute Windows batch command执行python脚本 3. 用Execute shell执行python脚本,注意开始要写#!p

使用sae定时执行Python脚本

使用sae定时执行Python脚本 使用sae定时执行Python脚本 12,May,2014 | 57 Views 毕设压力略大,必须是桂林游的锅.去之前放松了几天,回来又休闲了几天,加上桂林的一周,半个月直接没了.中午忙里偷闲尝试了下sae,出了这么久才开始用,真是捉急. 今天的目标是要让自己的微博能够整点报时.功能其实很简单,发微博的api新浪全都提供了.你甚至可以直接写段脚本,开着电脑让它一直跑,但这样太low了,尽管用sae服务的原理也是一样.使用sae定时执行Python脚本,布布扣

Python中执行系统命令常见的几种方法--转载

Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执行,结果直接打印出来 例如: >>> import os >>> os.system('ls') chk_err_log.py CmdTool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  MegaSA