python每天定时9点执行_python定时执行方法

python每天定时9点执行_python定时执行方法1time.sleepimporttimeforiinrange(5):print(i)time.sleep(10)2用shedimporttimeimportschedschedule=sched.scheduler(time.time,time.sleep)deffunc(string1,float1):print(“nowis”,time.time(),”…

大家好,又见面了,我是你们的朋友全栈君。

1 time.sleep

import time

for i in range(5):

print(i)

time.sleep(10)

2 用shed

copycode.gif

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())

copycode.gif

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

copycode.gif

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]

copycode.gif

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

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

copycode.gif

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()

copycode.gif

执行结果:

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的多线程并非真正的多线程导致

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

copycode.gif

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()

copycode.gif

4 linux用 crontab

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160693.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • idea激活码永久2022(注册激活)

    (idea激活码永久2022)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1TCF…

  • acwing-91. 最短Hamilton路径(状态压缩dp)

    acwing-91. 最短Hamilton路径(状态压缩dp)给定一张 n 个点的带权无向图,点从 0∼n−1 标号,求起点 0 到终点 n−1 的最短 Hamilton 路径。Hamilton 路径的定义是从 0 到 n−1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数 n。接下来 n 行每行 n 个整数,其中第 i 行第 j 个整数表示点 i 到 j 的距离(记为 a[i,j])。对于任意的 x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]≥a[x,z]。输出格式输出一个整数,表示最短 Ha

  • 什么是转发和重定向转发_转发和重定向的相同点

    什么是转发和重定向转发_转发和重定向的相同点通过代码和图解详细解释转发和重定向的区别。最后得出结论!

  • centos nmtui(centos7 nmtui配置)

    一般步骤:先编辑后激活,一步都不能少使用nmtui可以为新网卡添加连接,然后进行ip配置,也可以对已经存在且使用的网卡进行ip的直接设置…

  • 浅谈linux的命令行解析参数之getopt_long函数「建议收藏」

    浅谈linux的命令行解析参数之getopt_long函数「建议收藏」前言     在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNUC提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。一、关于命令行参数   命令行参数可以分为两类,一类是短选项,一类是长选项,短选项在参数前加一杠"-",长选项在参数前连续加两杠"–",如下表(ls命令参数)所示,…

  • 怎么同时运行两个tomcat?

    怎么同时运行两个tomcat?转载至:http://ask.zol.com.cn/x/4522378.html这几天由于在搞那个jenkins的自动部署项目所以要使用到两个tomcat(因为一个tomcat不能同时开着两个项目),一个作为jenkins服务器,一个作为项目部署服务器,所以找了一些资料看看一台电脑怎么运行两个tomcat。第一步:先下载两个tomcat(不同版本的也行,笔者用的是一个tomcat7,一个…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号