import time time.sleep(7) print(11) 让主程序暂时11秒后,再继续执行 time.sleep(0.1) # sleep 0.1秒 |
import time from tpf import log def task_to_run(): print("Task is running at the specified time (or close to it).") def run(wait_time = 24*60*60): current_time = time.time() target_time = current_time + wait_time while True: if time.time() >= target_time: task_to_run() break # 执行完毕后退出循环 else: time.sleep(3*60) # 每3*60秒检查一次时间 log("sleep",fil="run.log") run() run.sh nohup /data/jupyter/pyuban/bin/python /opt/wks/jupyter/test/run.py >/tmp/run.log 2>&1 & 下面的方式不一定生效 !sh run.sh 可采用下面的方式 import os os.system("sh /opt/wks/jupyter/test/run.sh ") |
|
|
|
time年月日时分秒
import time now =time.strftime("%Y-%m-%d %H:%M:%S") '2023-04-25 14:18:04' import time now =time.strftime("%H:%M:%S") '14:23:32'
import datetime t=datetime.datetime.strptime('2023-05-21','%Y-%m-%d') print(t) # 2023-05-21 00:00:00
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
当前日期前一天 import datetime day1 = datetime.datetime.now() - datetime.timedelta(days=1) day1.strftime('%Y-%m-%d') 指定日期前一天 import datetime date_A= input('请输入日期(格式:yyyy-mm-dd):') dayA= datetime.datetime.strptime(date_A, '%Y-%m-%d') delta=datetime.timedelta(days=1) dayB=dayA-delta print("输入日期的前一天:"+dayB.strftime('%Y-%m-%d'))
0.5天
import datetime day1 = datetime.datetime.now() - datetime.timedelta(days=0.5) day1.strftime('%Y-%m-%d %H:%M:%S') '2023-07-19 02:49:51'
import datetime,time dt = datetime.datetime(2022, 12, 21, 19, 10, 20) # 转struct_time tt = dt.timetuple() # struct_time 转秒数 seconds = time.mktime(tt) seconds 1671667820.0
天数相减
import datetime day1 = datetime.datetime.now() day3 = datetime.datetime.now() - datetime.timedelta(days=3) day = day1 - day3 day.days 输出: 2
两个日期之间的天数
from datetime import datetime start_date = "2023-01-01" end_date = "2023-07-14" start_datetime = datetime.strptime(start_date, "%Y-%m-%d") end_datetime = datetime.strptime(end_date, "%Y-%m-%d") delta = end_datetime - start_datetime days = delta.days days 194
time.time
import time start_time = time.time() # 记录程序开始时间 y=model(X=index) end_time = time.time() # 记录程序结束时间 tim_ms = round((end_time - start_time)*1000,2) print("程序运行时间为", tim_ms, "毫秒")
datetime.datetime.now()
import datetime start_time = datetime.datetime.now() # 记录程序开始时间 y=model(X=index) end_time = datetime.datetime.now() # 记录程序结束时间 tim = (end_time - start_time) print(type(tim)) # class 'datetime.timedelta' print("程序运行时间为", tim.total_seconds() *1000,"毫秒")
timeit:可精确到微秒
import timeit # 只能写简单的代码,不能写方法,不能对象调用 code_to_test = """ for i in range(10000): pass """ elapsed_time = timeit.timeit(code_to_test, number=1) print("代码执行1次的平均时间为:", round(elapsed_time*1000*1000), "微秒")
代码执行1次的平均时间为: 184 微秒
profile
import profile def foo(): for i in range(10000000): pass profile.run("foo()") 5 function calls in 0.234 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.234 0.234 0.234 0.234 2673007575.py:3(foo) 1 0.000 0.000 0.234 0.234 :0(exec) 1 0.000 0.000 0.000 0.000 :0(setprofile) 1 0.000 0.000 0.234 0.234 string:1(module) 1 0.000 0.000 0.234 0.234 profile:0(foo()) 0 0.000 0.000 profile:0(profiler)
cProfile : c语言版的profile
import cProfile def foo(): for i in range(10000): pass cProfile.run("foo()") 4 function calls in 0.001 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.001 0.001 0.001 0.001 1155913500.py:3(foo) 1 0.000 0.000 0.001 0.001 string:1(module) 1 0.000 0.000 0.001 0.001 {built-in method builtins.exec} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
当前时间N月以前,不包含N
import time def month_before(n=1): """N月以前 - 以12为进制计算年月 - 202308 1月以前就是202307 """ t = time.localtime(time.time()) year=t[0] month=t[1] interval = n interval_month = interval%12 interval_month if interval <= month: new_month = month - interval new_year = year if new_month == 0 : new_year = year - 1 new_month = 12 else: new_month = month - interval interval_year = int((0-new_month)/12) new_year = year - (interval_year+1) new_month = new_month%12 if new_month == 0 : new_month = 12 res = "{}{}".format(new_year, '%02d'%new_month) return res
验证
当前时间:2023-08 month_before(n=1) '202307' month_before(n=7) '202301' month_before(n=8) '202212' month_before(n=12) '202208' month_before(n=20) '202112'
指定月份N月以前
def month_before2(year,month,n=1): """N月以前 - 以12为进制计算年月 - 202308 1月以前就是202307 """ interval = n year = int(year) month = int(month) interval_month = interval%12 interval_month if interval <= month: new_month = month - interval new_year = year if new_month == 0 : new_year = year - 1 new_month = 12 else: new_month = month - interval interval_year = int((0-new_month)/12) new_year = year - (interval_year+1) new_month = new_month%12 if new_month == 0 : new_month = 12 res = "{}{}".format(new_year, '%02d'%new_month) return res
month_before2(2023,1,n=1,) '202212' month_before2(2023,11,n=1,) '202310'
逐月取前一个月
m1 = "202212" m2 = "202311" while m2>m1: year = m2[:4] month = m2[4:6] res = month_before2(year,month) print(res) m2 = res 202310 202309 202308 202307 202306 202305 202304 202303 202302 202301 202212
import datetime t=datetime.datetime.now().isocalendar() y,x,d = t if d == 0: d = '日' print(f"今天是{y}年第{x}个星期,星期{d}") # 今天是2023年第21个星期,星期4