python每天定時9點執行_python定時器每天訂時執行的實例方法

python定時器,實現每天凌晨3點執行的方法

如下所示:

'''

Created on 2018-4-20

例子:每天凌晨3點執行func方法

'''

import datetime

import threading

def func():

print("haha")

#如果需要循環調用,就要添加以下方法

timer = threading.Timer(86400, func)

timer.start()

# 獲取現在時間

now_time = datetime.datetime.now()

# 獲取明天時間

next_time = now_time + datetime.timedelta(days=+1)

next_year = next_time.date().year

next_month = next_time.date().month

next_day = next_time.date().day

# 獲取明天3點時間

next_time = datetime.datetime.strptime(str(next_year)+"-"+str(next_month)+"-"+str(next_day)+" 03:00:00", "%Y-%m-%d %H:%M:%S")

# # 獲取昨天時間

# last_time = now_time + datetime.timedelta(days=-1)

# 獲取距離明天3點時間,單位為秒

timer_start_time = (next_time - now_time).total_seconds()

print(timer_start_time)

# 54186.75975

#定時器,參數為(多少時間后執行,單位為秒,執行的方法)

timer = threading.Timer(timer_start_time, func)

timer.start()

以上這篇python 定時器,實現每天凌晨3點執行的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持碼農之家。

Python定時器實例代碼

在實際應用中,我們經常需要使用定時器去觸發一些事件。Python中通過線程實現定時器timer,其使用非常簡單。看示例:

import threading

def fun_timer():

print('Hello Timer!')

timer = threading.Timer(1, fun_timer)

timer.start()

輸出結果:

Hello Timer!

Process finished with exit code 0

注意,只輸出了一次,程序就結束了,顯然不是我們想要的結果。看Timer類中的解釋性描述:

"""Call a function after a specified number of seconds"""

一段時間后調用一個函數,但并沒有說要循環調用該函數。因此,修改如下:

def fun_timer():

print('Hello Timer!')

global timer

timer = threading.Timer(5.5, fun_timer)

timer.start()

timer = threading.Timer(1, fun_timer)

timer.start()

輸出結果:

Hello Timer!

Hello Timer!

Hello Timer!

Hello Timer!

............

定時器工作正常。

在使用Python定時器時需要注意如下4個方面:

(1)定時器構造函數主要有2個參數,第一個參數為時間,第二個參數為函數名,第一個參數表示多長時間后調用后面第二個參數指明的函數。第二個參數注意是函數對象,進行參數傳遞,用函數名(如fun_timer)表示該對象,不能寫成函數執行語句fun_timer(),不然會報錯。用type查看下,可以看出兩者的區別。

print(type(fun_timer()))

print(type(fun_timer))

輸出:

Hello Timer!

(2)必須在定時器執行函數內部重復構造定時器,因為定時器構造后只執行1次,必須循環調用。

(3)定時器間隔單位是秒,可以是浮點數,如5.5,0.02等,在執行函數fun_timer內部和外部中給的值可以不同。如上例中第一次執行fun_timer是1秒后,后面的都是5.5秒后執行。

(4)可以使用cancel停止定時器的工作,如下例:

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

import threading

import time

def fun_timer():

print('Hello Timer!')

global timer

timer = threading.Timer(5.5, fun_timer)

timer.start()

timer = threading.Timer(1, fun_timer)

timer.start()

time.sleep(15) # 15秒后停止定時器

timer.cancel()

輸出:

Hello Timer!

Hello Timer!

Hello Timer!

Process finished with exit code 0

下面是一個Python寫的定時器,定時精度可調節,分享給大家。

# -* coding: utf-8 -*-

import sys

import os

import getopt

import threading

import time

def Usage():

usage_str = '''說明:

\t定時器

\timer.py -h 顯示本幫助信息,也可以使用--help選項

\timer.py -d num 指定一個延時時間(以毫秒為單位)

\t 也可以使用--duration=num選項

'''

print(usage_str)

def args_proc(argv):

'''處理命令行參數'''

try:

opts, args = getopt.getopt(sys.argv[1:], 'hd:', ['help', 'duration='])

except getopt.GetoptError as err:

print('錯誤!請為腳本指定正確的命令行參數。\n')

Usage()

sys.exit(255)

if len(opts) < 1:

print('使用提示:缺少必須的參數。')

Usage()

sys.exit(255)

usr_argvs = {}

for op, value in opts:

if op in ('-h', '--help'):

Usage()

sys.exit(1)

elif op in ('-d', '--duration'):

if int(value) <= 0:

print('錯誤!指定的參數值%s無效。\n' % (value))

Usage()

sys.exit(2)

else:

usr_argvs['-d'] = int(value)

else:

print('unhandled option')

sys.exit(3)

return usr_argvs

def timer_proc(interval_in_millisecond):

loop_interval = 10# 定時精度,也是循環間隔時間(毫秒),也是輸出信息刷新間隔時間,它不能大于指定的最大延時時間,否則可能導致無任何輸出

t = interval_in_millisecond / loop_interval

while t >= 0:

min = (t * loop_interval) / 1000 / 60

sec = (t * loop_interval) / 1000 % 60

millisecond = (t * loop_interval) % 1000

print('\rThe remaining time:%02d:%02d:%03d...' % ( min, sec, millisecond ), end = '\t\t')

time.sleep(loop_interval / 1000)

t -= 1

if millisecond != 0:

millisecond = 0

print('\rThe remaining time:%02d:%02d:%03d...' % ( min, sec, millisecond ), end = '\t\t')

print()

# 應用程序入口

if __name__ == '__main__':

usr_argvs = {}

usr_argvs = args_proc(sys.argv)

for argv in usr_argvs:

if argv in ( '-d', '--duration'):

timer_proc(usr_argvs[argv])

else:

continue

總結

以上就是本文關于Python定時器實例代碼的全部內容,希望對大家有所幫助。歡迎參閱:Python生成數字圖片代碼分享、Python列表刪除的三種方法代碼分享、13個最常用的Python深度學習庫介紹等,有什么問題可以隨時留言,歡迎大家交流參考。

以上就是本次給大家分享的關于java的全部知識點內容總結,大家還可以在下方相關文章里找到相關文章進一步學習,感謝大家的閱讀和支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446295.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446295.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446295.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python學習16 正則表達式2 re模塊

re 模塊 re 模塊&#xff1a; Python的 re 模塊實現了正則表達式處理的功能。 導入re模塊后&#xff0c;使用findall、search函數可以進行匹配 查找&#xff1a;match和search 多個匹配上的&#xff0c;也只會返回第一個匹配上的 re.match()&#xff1a; 需要特別注意的是&…

STL源碼剖析 內存基本處理工具 初始化空間的五個函數

初始化空間的五個函數構造函數 construct()析構函數 destroy()剩余三個底層函數 和 高層函數之間的對應關系如下uninitialized_copy() 對應 copy()uninitialized_fill() 對應 fill()uninitialized_fill_n() 對應 fill_n()使用<memory>使用上述三個底層函數 uninitiali…

單基因gsea_篩到5分的核心基因以后你可以怎么做?

這一次我們從一些已經發表的文章拆解&#xff0c;我們來看看&#xff0c;你找到了一個核心基因以后&#xff0c;你可以怎么做呢&#xff1f;我們就不說那么多廢話了&#xff0c;直接用幾篇文章的解讀來帶著大家領會一下如何去進行下一步的分析。Case1&#xff1a;預后標志物免疫…

安卓 原生okhttp使用get與post獲取網絡數據

網址 https://square.github.io/okhttp/ 配置 依賴 在module的build.gradle中&#xff1a; implementation com.squareup.okhttp3:okhttp:3.14.7implementation com.squareup.okio:okio:1.17.5AndroidManifest.xml <uses-permission android:name"android.permissi…

STL源碼剖析 迭代器的概念和traits編程技法

迭代器&#xff1a;依序巡防某個聚合物(容器)所含的各個元素&#xff0c;但是不需要暴露這個聚合物的內部表述方式核心思想&#xff1a;將容器和算法分開&#xff0c;彼此獨立設計容器和算法的泛型化&#xff0c;均可以使用模板&#xff0c;使用迭代器連接容器和算法例子 templ…

.sql文件如何執行_干貨|一條SQL查詢語句是如何執行的

作者&#xff1a;wanber鏈接&#xff1a;https://blog.nowcoder.net/n/9e120e8f1314466bb44fe706b283dc20

STL源碼剖析 5中迭代器型別

最常使用的5種迭代器的型別 為 value_type、difference_type、pointer、reference、iterator_category。如果想要自己開發的容器和STL進行適配&#xff0c;就需要定義上述5種類型 iteraor_traits 必須針對傳入的型別為 pointer 或者 pointer-to-const設計偏特化版本 template &…

Python學習16 正則表達式3 練習題

用戶名匹配 1.用戶名匹配&#xff1a;由數字、大小寫字母、下劃線_、中橫線-組成&#xff0c;長度為6-12位&#xff0c;不能以數字開頭。 import re usernameab578_-SDF resultre.search(^[a-zA-Z_-][0-9a-zA-Z_-]{5,12}$,username) print(result)郵箱 2.驗證輸入的郵箱&…

加載tf模型 正確率很低_深度學習模型訓練全流程!

↑↑↑關注后"星標"Datawhale每日干貨 & 每月組隊學習&#xff0c;不錯過Datawhale干貨 作者&#xff1a;黃星源、奉現&#xff0c;Datawhale優秀學習者本文從構建數據驗證集、模型訓練、模型加載和模型調參四個部分對深度學習中模型訓練的全流程進行講解。一個成…

Python學習17 Turtle庫繪圖

學習網址&#xff1a;https://docs.python.org/zh-cn/3/library/turtle.html Turtle庫 Turtle庫是Python語言中一個很流行的繪制圖像的函數庫&#xff0c;一個小烏龜&#xff0c;在一個橫軸為x、縱軸為y的坐標系原點&#xff08;畫布中心&#xff09;&#xff0c;(0,0)位置開…

android ros 節點編寫_嵌入式的我們為什么要學ROS

前言本來是要寫一篇STM32移植ROS的一個小lib庫&#xff0c;ROS一般都是需要跑在Linux上的&#xff0c;STM32使用就是當成一個ROS通訊的小節點&#xff0c;但是寫文章時間不夠&#xff0c;所以就簡單做一篇ROS的介紹文章&#xff0c;分享給嵌入式的小伙伴們。ROS現在在機器人領域…

STL源碼剖析 __type_traits

traits編程 彌補了C本身的不足STL只對迭代器進行規范制定出了iterator_traits&#xff0c;SGI在此基礎上進一步擴展&#xff0c;產生了__type_traits雙下劃線的含義是這個是SGI內部使用的東西&#xff0c;不屬于STL標準iterator_traits 負責萃取迭代器的特性__type_traits負責萃…

java 學生成績

題目 對學生成績大于60分的&#xff0c;輸出“合格”。低于60分的&#xff0c;輸出“不合格” 代碼 使用/除法簡化代碼 package l1_switch_case;import java.util.Scanner;public class SwitchDemo2 {public static void main(String[] args) {Scanner scanner new Scanne…

STL源碼剖析 序列式容器|Vector

容器的概觀和分類 array 數組 、list 鏈表、tree樹 、stack堆棧、queue隊列、hash table散列表、set集合、map映射表根據數據在容器中的排列順序&#xff0c;將上述數據結構分為序列式和關聯式兩種類型SGI STL使用內縮方式來表達基層和衍生層之間的關系衍生不是派生&#xff0…

ansible 修改文件變量_Ansible Playbook中的變量與引用

Ansible是一個系列文章&#xff0c;我會盡量以通俗易懂、詼諧幽默的總結方式給大家呈現這些枯燥的知識點&#xff0c;讓學習變的有趣一些。Ansible自動化運維前言前面有說到使用playbook來搞一些復雜的功能&#xff0c;我們使用YAML來寫playbook&#xff0c;就像我們用其它語言…

java 判斷日期為第幾天

題目1 編寫程序&#xff1a;從鍵盤上輸入2019年的“month”和“day”&#xff0c;要求通過程序 輸出輸入的日期為2019年的第幾天。 代碼1 從12月往下加日期數 package l1_switch_case; import java.util.Scanner; public class SwitchDemo4 {public static void main(Strin…

STL源碼剖析 list概述

目錄 list的節點(node) list迭代器 list 的構造和內存管理 list 的元素操作 list相較于vector連續的線性空間就顯得很復雜&#xff0c;他的存儲空間是不連續的&#xff0c;好處是每次插入和刪除一個元素的時候&#xff0c;只需要配置或者釋放一個元素的空間 插入和刪除十分的…

vsftp不允許切換到其它目錄_IntelliJ IDEA如何對project的目錄進行篩選顯示?

如果你的項目很龐大&#xff0c;同一個功能用到的各種文件散落在多個文件夾&#xff0c;開發時切換不便&#xff0c;可以利用scope功能&#xff0c;只顯示該功能用到的文件&#xff0c;讓project列表十分清爽&#xff0c;提高開發效率。本文使用的IDEA版本為2020.1。1、打開sco…

java 年份對應的中國生肖

題目 編寫一個程序&#xff0c;為一個給定的年份找出其對應的中國生肖。 中國的生肖基于12年一個周期&#xff0c; 每年用一個動物代表&#xff1a; rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、 rooster、dog、pig。 提示&#xff1a;2019年&#xff1a;豬…

密碼學專題 對稱加密算法

一般來說&#xff0c;使用OpenSSL對稱加密算法有兩種方式&#xff0c;一種是使用API函數的方式&#xff0c;一種是使用OpenSSL提供的對稱加密算法指令方式。本書將介紹對稱加密算法的指令方式OpenSSL的對稱加密算法指令主要用來對數據進行加密和解密處理&#xff0c;輸入輸出的…