python time模块倒计时_python使用time模块定时触发执行任务

01. 介绍

在linux系统中,想执行脚本(包括shell、python)时,在没有使用到crontab定时任务的情况下,可以写一个Python自身的定时触发器。

通过获取当前时间与目标触发时间的时间差,然后判断时间差是否为0(即是目标触发时间),如果是0,则执行一次任务;然后通过while判断,如果为True则执行任务,达到每天执行的效果。

如果结合at任务,在linux系统后台执行,那么效果更佳。在文章最后附一下主要步骤。

02. python2代码

#!/usr/bin/python

# -*- coding:utf-8 -*-

import time

from datetime import datetime, timedelta

def doFirst():

curTime = datetime.now() #读取当前系统时间

desTime = curTime.replace(hour=12, minute=0, second=0, microsecond=0) #设置想要触发的目标时间,此处设置为12:00:00

delta = desTime-curTime #时间差

skipSeconds = int(delta.total_seconds()) #把时间差转换成以秒为单位的时间`

if skipSeconds == 0:

return True

else:

if skipSeconds < 0:

skipSeconds += 24*60*60 #设置触发周期,此处设置为1天

print "还有 %d 秒触发" % skipSeconds

return False

while True:

if doFirst():

#99乘法表Python代码

for i in range(1, 10):

for j in range(1,i+1):

print '{}x{}={}\t'.format(i,j,i*j),

print ''

time.sleep(23*59*60) #触发周期为1天,当还剩1分钟时,开始倒计时

time.sleep(1)

03. Python3代码

#!/usr/bin/python3

import time

from datetime import datetime, timedelta

def dofirst():

now_time = datetime.now() #现在时间

des_time = now_time.replace(hour=7, minute=7, second=7, microsecond=0) #定时执行时间,这里设置为07:07:07

delta_time = des_time-now_time #时间差

skip_seconds = int(delta_time.total_seconds()) #时间差转换成一秒为单位

if skip_seconds == 0:

return True

else:

if skip_seconds < 0:

skip_seconds += 24*60*60 #设置触发周期,此处设置为1天

print ("还有%d秒触发" % skip_seconds)

return False

while True:

if dofirst():

# 9x9乘法口诀

for i in range(1, 10):

for j in range(1, i+1):

print ('{}x{}={}\t'.format(i, j, i*j), end='')

print()

time.sleep(23*59*60) #触发周期设置为1天,在还有1分钟,开始倒计时

time.sleep(1)

04. 一次性执行任务at使用

at的简单使用

$ at 15:07--在哪一个时间执行

warning: commands will be executed using /bin/sh

at> /home/mai/test.sh

at> ---按CTRL+D保存并退出

job 6 at Wed Apr 3 15:07:00 2019

$ atq--查看执行任务

6 Wed Apr 3 15:07:00 2019 a mai

$ at -c 6 | tail -2--查看执行具体任务

/home/mai/test.sh

$ atrm 6--删除任务

$ ps -ef |grep test.sh--查看是否还存在,如果脚本里面还有循环定时,那么进程还是存在的,那么就要kill pid

例子:

$ at 4:00 tomorrow--在明天4点执行

at> /home/mai/.bk_data.sh

at>

1-1.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值