Python time模块和datetime模块,以及多线程
1. time模块
1.1 time.time()函数
time.time()函数返回自1970年1月1日0点到现在的秒数。
纪元时间戳可以用于剖析代码,也就是测量一段代码的运行时间。如果在代码块开始时调用time.time(),并在结束时再次打开,就可以用第二个时间戳减去第一个,得到这两次调用之间经过的时间。
1.2 time.sleep()函数
如果需要让程序暂停一下,就可以调用time.sleep()函数,并传人希望程序暂停的秒数。
2.数字四舍五入
在处理时间时,会经常出现小数点后有许多数字的浮点值。为了让这些值更易于处理,可以用python内置的round()函数将他们缩短,第一个参数,传人腰舍入的数字,再加上第二个可选参数,指明要传人到小数点多少位。如果省略第二个参数,则保留最接近的整数位。
3. datetime模块
time模块用于取得Unix纪元时间戳,并加以处理,但是,如果以更方便的格式显示日期,或对日期进行算数运算(例如:搞清楚205天前时什么日期,或123天后时什么日期),就应该用datetime模块。
import time,datetime t1 = time.time() t2 = datetime.datetime.fromtimestamp(t1) #返回当前时间 print(t2) print(t2.year) print(t2.month) print(t2.day) print(t2.hour) print(t2.minute) print(t2.second) t3 = datetime.datetime(2023,7,25,17,49,50) #输入指定的年月日时分秒,返回特定的日期 print(t3) t4 = datetime.datetime.now() #与datetime.datetime.fromtimestamp功能相同,返回当前时刻 print(t4)
3.1 datetime.timedelat模块
import datetime date = datetime.timedelta(days=11,hours=12,minutes=58,seconds=58) print(date) print(date.days) print((date.seconds))#12小时58分58秒用换算成秒表示 print(date.total_seconds()) print(str(date))
datetime.timedelta()函数接受关键字参数weeks、days、hours、minutes、seconds、milliseconds和microseconds。
timedelta对象拥有的总时间以天、秒、和微妙来表示。这些数字分别保存在days、seconds和microseconds属性中。
total_seconds()方法返回只以秒表示的时间。
将一个timedelta对象传人str(),将返回格式良好的,人类可读的字符串表示。
3.2 时间计算
算数运算符可以用于对datetime值进行日期运算,如下所示:计算今天之后1000天的日期
import datetime date = datetime.datetime.now() print(date) date1 = datetime.timedelta(days=1000) print(date + date1)
4.通过strftime()指令将datetime对象转换为字符串
- %Y:带世纪的年份,例如‘2023’
- %y:不带世纪的年份,例如‘23’
- %m:数字表示的月份,01至12
- %B:完整的月份,例如‘November’
- %b:简写的月份,例如‘Nov’
- %d:一月中的第几天,‘01’至‘31’
- %j:一年中的第几天,‘001’至‘366’
- %w:一周中的第几天,‘0’(周日)至6(周六)
- %A:完整的周几,例如‘Monday’
- %a:简写的周几,例如‘Mon’
- %H:小时(24小时时钟),‘00’至‘23’
- %I:小时(12小时时钟),‘01’至‘12’
- %M:分,‘00’至‘59’
- %S:秒,‘00’至‘59’
- %p:‘AM’或‘PM’
- %%:就是%字符
import datetime date = datetime.datetime(2023,7,26,10,56,0) date1 = date.strftime('%Y/%m/%d %H:%M:%S') print(date1)
5.将字符串转换成datetime对象
strptime()函数将格式化的字符串解析为时间。如下示例
import datetime t = '2023/07/26 12:08:56' date = datetime.datetime.strptime(t,'%Y/%m/%d %H:%M:%S') print(date)
6. 多线程
如下所示代码,定义了一个函数,启动一个线程调用这个函数
import time,threading print('Thread is staring ....') def test(): time.sleep(8) print('Is done') obj = threading.Thread(target=test) obj.start() print('good job')
如下所示,启动一个线程,调用print函数,输入内容给args参数,参数给kwargs
import threading print('dog','cat','pig',sep=' & ') thread = threading.Thread(target=print,args=['pig','cat','dog'],kwargs={'sep' : '&'}) thread.start()