万字长文带你从底层到实战了解Python中的time模块,从基础到进阶让你轻松掌握时间管理

news2024/10/7 12:54:29

在这里插入图片描述

  • 博客主页:长风清留扬-CSDN博客
  • 系列专栏:Python基础专栏
  • 每天更新大数据相关方面的技术,分享自己的实战工作经验和学习总结,尽量帮助大家解决更多问题和学习更多新知识,欢迎评论区分享自己的看法
  • 感谢大家点赞👍收藏⭐评论

time模块

Python 的 time 模块提供了各种与时间相关的函数。这些函数可以用来获取当前时间、操作时间和日期、将时间转换为不同的格式等。

时间表示

在 time 模块中,时间通常有两种表示方式:

  • 时间戳(timestamp):表示从1970年1月1日00:00:00(称为Unix纪元或Epoch时间)起至现在的秒数。
  • 结构化时间(struct_time):是一个命名元组(namedtuple),包含九个元素,分别表示年、月、日、时、分、秒、星期几、一年中的第几天、夏令时标志。

常用函数

获取当前时间

time.time()

time.time() 函数返回当前时间的时间戳(浮点数),即从1970年1月1日00:00:00(称为Unix纪元或Epoch时间)起至现在的秒数。

import time  
  
# 获取当前时间的时间戳  
current_timestamp = time.time()  
print("当前时间戳:", current_timestamp)
#输出结果:当前时间戳: 1696416612.345678  # 这里的数字是一个示例,实际运行时会得到不同的时间戳

time.localtime([secs])

将时间戳转换为本地时间的结构化时间。

描述

time.localtime([secs]) 函数将一个时间戳(默认为当前时间)转换为一个本地时间的结构化时间(struct_time)。

参数
  • secs(可选):时间戳。如果未提供,则使用当前时间。
案例
import time  
  
# 获取当前时间的时间戳  
current_timestamp = time.time()  
  
# 将时间戳转换为本地时间的结构化时间  
local_time = time.localtime(current_timestamp)  
print("本地时间结构化表示:", local_time)  
  
# 访问结构化时间中的各个元素  
print("年:", local_time.tm_year)  
print("月:", local_time.tm_mon)  
print("日:", local_time.tm_mday)  
print("小时:", local_time.tm_hour)  
print("分钟:", local_time.tm_min)  
print("秒:", local_time.tm_sec)  
print("星期几:", local_time.tm_wday)  # 0代表星期一,6代表星期日  
print("一年中的第几天:", local_time.tm_yday)  
print("夏令时标志:", local_time.tm_isdst)  # 0代表非夏令时,-1代表信息无效,1代表夏令时
# 输出结果
#本地时间结构化表示: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=4, tm_hour=14, tm_min=30, tm_sec=12, tm_wday=2, tm_yday=277, tm_isdst=0)  
#年: 2023  
#月: 10  
#日: 4  
#小时: 14  
#分钟: 30  
#秒: 12  
#星期几: 2  # 代表星期二  
#一年中的第几天: 277  
#夏令时标志: 0  # 代表非夏令时

time.gmtime([secs])

将时间戳转换为UTC时间的结构化时间。

描述

time.gmtime([secs]) 函数将一个时间戳(默认为当前时间)转换为一个UTC时间的结构化时间(struct_time)。

参数
  • secs(可选):时间戳。如果未提供,则使用当前时间。
案例
import time  
  
# 获取当前时间的时间戳  
current_timestamp = time.time()  
  
# 将时间戳转换为UTC时间的结构化时间  
utc_time = time.gmtime(current_timestamp)  
print("UTC时间结构化表示:", utc_time)  
  
# 访问结构化时间中的各个元素(与localtime相同)  
print("年:", utc_time.tm_year)  
# ...(其他元素类似)
# 输出结果
#UTC时间结构化表示: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=4, tm_hour=6, tm_min=30, tm_sec=12, tm_wday=2, tm_yday=277, tm_isdst=0)  : 2023  
# ...(其他元素的值会根据当前UTC时间而变化)

注意:由于UTC时间与本地时间可能存在时区差异,因此tm_hour等时间元素的值可能与localtime的结果不同。

时间格式化参数

在 strftime 和 strptime 函数中,格式化字符串用于指定时间的格式。以下是一些常用的格式化指令:

符号符号描述举例
%a本地(locale)的简化星期名称Mon, Tue, …, Sun
%A本地完整星期名称Monday, Tuesday, …, Sunday
%b本地简化的月份名称Jan, Feb, …, Dec
%B本地完整的月份名称January, February, …, December
%c本地相应的日期和时间表示例如: Tue Aug 16 01:30:00 1988(注意:实际输出取决于locale)
%d一个月中的第几天(01-31)01, 02, …, 31
%H一天中的第几个小时(24小时制,00-23)00, 01, …, 23
%I一天中的第几个小时(12小时制,01-12)01, 02, …, 12
%j一年中的第几天(001-366)001, 002, …, 366
%m月份(01-12)01, 02, …, 12
%M分钟数(00-59)00, 01, …, 59
%p本地am或pm的相应符AM, PM
%S秒(00-61,60和61是为了考虑闰秒的情况)00, 01, …, 61(注意:通常秒数为00-59,60和61仅在闰秒时出现)
%U一年中的第几周(00-53,星期天为一周的开始)00, 01, …, 53
%w一周中的第几天(0-6,0为星期天)0, 1, …, 6
%W一年中的第几周(00-53,星期一为一周的开始)00, 01, …, 53
%x本地相应的日期表示(取决于locale)例如: 08/16/88(实际输出取决于locale)
%X本地相应的时间表示(取决于locale)例如: 01:30:00(实际输出取决于locale)
%y两位数的年份表示(00-99)00, 01, …, 99
%Y四位数的年份表示2023, 1988
%Z时区的名字(如果不存在为空字符串)UTC, CST, …
%%一个百分号字符%

时间格式化

time.strftime(format[, t])

将时间元组(struct_time)或默认当前时间转换为一个格式化的时间字符串。

参数:

  • format:格式化字符串,指定了时间字符串的格式。
  • t(可选):时间元组(struct_time),默认为当前时间。

作用:

根据format指定的格式,将时间元组t转换为一个字符串。

案例

import time  
  
# 获取当前时间的时间元组  
current_time = time.localtime()  
  
# 格式化时间字符串  
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time)  
  
# 打印格式化后的时间字符串  
print(f"Formatted Time: {formatted_time}")  # 例如: Formatted Time: 2023-10-05 14:30:00
# 输出结果:输出的时间字符串将基于当前系统时间,格式如2023-10-05 14:30:00。

time.strptime(string, format)

根据指定的格式解析时间字符串,返回对应的时间元组(struct_time)。

参数:

  • string:要解析的时间字符串。
  • format:格式化字符串,指定了时间字符串的格式。

作用:

将符合format格式的时间字符串string解析为一个时间元组。

案例

import time  
  
# 时间字符串  
time_string = "2023-10-05 14:30:00"  
  
# 解析时间字符串为时间元组  
parsed_time = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")  
  
# 打印解析后的时间元组  
print(f"Parsed Time Tuple: {parsed_time}")  # 例如: Parsed Time Tuple: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=5, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=4, tm_yday=278, tm_isdst=0)  
  
# 也可以将解析后的时间元组转换回格式化的时间字符串以验证  
verified_time_string = time.strftime("%Y-%m-%d %H:%M:%S", parsed_time)  
print(f"Verified Time String: {verified_time_string}")  # 例如: Verified Time String: 2023-10-05 14:30:00

运行结果:

  • parsed_time将是一个time.struct_time对象,包含了解析后的时间信息。
  • verified_time_string将是一个与原始time_string相同的格式化时间字符串,验证了strptime和strftime的互逆性。

time.struct_time

struct_time是一个命名元组(named tuple),用于表示时间。它通常是通过time.localtime()、time.gmtime()或time.strptime()等函数返回的。

字段

  • tm_year:年份(例如,2023)
  • tm_mon:月份(1-12)
  • tm_mday:一个月中的第几天(1-31)
  • tm_hour:小时(0-23)
  • tm_min:分钟(0-59)
  • tm_sec:秒(0-61,60和61用于闰秒)
  • tm_wday:一周中的第几天(0-6,0是星期天)
  • tm_yday:一年中的第几天(1-366)
  • tm_isdst:是否是夏令时(1是,0否,-1未知)

注意:

虽然struct_time是一个命名元组,但它不支持直接修改其字段。如果需要修改时间,可以创建一个新的struct_time对象或使用其他时间处理函数。

总结

  • time.strftime(format[, t]):将时间元组转换为格式化的时间字符串。
  • time.strptime(string, format):将格式化的时间字符串解析为时间元组。
  • time.struct_time:表示时间的命名元组,包含年、月、日、时、分、秒等信息。

时间运算

时间戳与时间元组

  • 时间戳:是一个浮点数,表示从1970年1月1日(称为Unix纪元或Epoch)到当前时间的秒数。它通常用于计算机内部的时间表示和计算。
  • 时间元组:是一个命名元组(named tuple),包含九个字段,分别表示年、月、日、时、分、秒、星期几、一年中的第几天以及是否是夏令时。它通常用于人类可读的时间表示。

time() 函数

返回当前时间的时间戳(浮点数)。

import time  
  
# 获取当前时间的时间戳  
current_timestamp = time.time()  
  
# 打印当前时间戳  
print(f"Current Timestamp: {current_timestamp}")  # 例如: Current Timestamp: 1696514230.123456

localtime() 和 gmtime() 函数

将时间戳转换为本地时间或UTC时间的struct_time对象。

参数:

  • 可选的时间戳(默认为当前时间)。

作用:

  • localtime():将时间戳转换为本地时间(考虑时区)。
  • gmtime():将时间戳转换为UTC时间(不考虑时区)。

案例

import time  
  
# 获取当前时间的时间戳  
current_timestamp = time.time()  
  
# 将时间戳转换为本地时间  
local_time = time.localtime(current_timestamp)  
  
# 将时间戳转换为UTC时间  
utc_time = time.gmtime(current_timestamp)  
  
# 打印本地时间和UTC时间  
print(f"Local Time: {local_time}")  # 例如: Local Time: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=6, tm_hour=10, tm_min=30, tm_sec=12, tm_wday=4, tm_yday=279, tm_isdst=0)  
print(f"UTC Time: {utc_time}")      # 例如: UTC Time: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=6, tm_hour=2, tm_min=30, tm_sec=12, tm_wday=4, tm_yday=279, tm_isdst=0)

mktime()

将struct_time对象转换为时间戳。

参数:

  • struct_time对象。

作用:

将时间元组转换为对应的Unix时间戳。

案例

import time  
  
# 创建一个时间元组  
time_tuple = time.struct_time((2023, 10, 6, 10, 30, 12, 4, 279, 0))  
  
# 将时间元组转换为时间戳  
timestamp = time.mktime(time_tuple)  
  
# 打印转换后的时间戳  
print(f"Timestamp from Time Tuple: {timestamp}")  # 例如: Timestamp from Time Tuple: 1696573812.0

时间运算

由于时间戳是一个浮点数,因此可以直接进行加减运算来表示时间的增加或减少。例如,加上3600秒表示增加一小时,减去86400秒表示减少一天。

import time  
  
# 获取当前时间的时间戳  
current_timestamp = time.time()  
  
# 增加一小时(3600秒)  
future_timestamp = current_timestamp + 3600  
  
# 减少一天(86400秒)  
past_timestamp = current_timestamp - 86400  
  
# 将时间戳转换为可读的时间元组  
future_time = time.localtime(future_timestamp)  
past_time = time.localtime(past_timestamp)  
  
# 打印结果  
print(f"Current Time: {time.localtime(current_timestamp)}")  # 例如: Current Time: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=6, tm_hour=10, tm_min=50, tm_sec=34, tm_wday=4, tm_yday=279, tm_isdst=0)  
print(f"Future Time (1 hour later): {future_time}")          # 例如: Future Time (1 hour later): time.struct_time(tm_year=2023, tm_mon=10, tm_mday=6, tm_hour=11, tm_min=50, tm_sec=34, tm_wday=4, tm_yday=279, tm_isdst=0)  
print(f"Past Time (1 day earlier): {past_time}")             # 例如: Past Time (1 day earlier): time.struct_time(tm_year=2023, tm_mon=10, tm_mday=5, tm_hour=10, tm_min=50, tm_sec=34, tm_wday=3, tm_yday=278, tm_isdst=0)

暂停执行

在Python中,time模块提供了一些用于延迟执行或暂停程序运行的函数。这些函数通常用于在程序执行中插入等待时间,例如在循环之间等待、模拟延迟或在调试期间暂停程序。

time.sleep(seconds)

time.sleep() 是最常用的延迟函数,它会使程序暂停指定的秒数。这个函数接受一个浮点数作为参数,可以是小数,以秒为单位。

import time  
  
print("程序开始")  
time.sleep(2)  # 暂停2秒  
print("2秒后程序继续")

注意事项:

  • time.sleep() 会阻塞程序的执行,直到指定的时间过去。
  • 在多线程环境中,time.sleep() 会阻塞调用它的线程,而不是整个程序。

time.perf_counter_ns() 和 time.sleep(ns / 1e9) 使用纳秒延迟

虽然 time.sleep() 主要接受秒作为参数,但你可以通过传递纳秒数(通过除以 1e9 转换为秒)来实现更精确的延迟。time.perf_counter_ns() 可以用于获取高精度的时间戳(以纳秒为单位),尽管它本身并不用于延迟,但可以用来测量延迟的准确性。

import time  
  
start_time = time.perf_counter_ns()  
  
# 延迟100毫秒(100,000,000纳秒)  
time.sleep(100_000_000 / 1e9)  
  
end_time = time.perf_counter_ns()  
elapsed_time = (end_time - start_time) / 1e6  # 转换为毫秒  
  
print(f"延迟了 {elapsed_time:.2f} 毫秒")

注意事项

  • 精度和平台差异:time.sleep() 的精度取决于底层操作系统的调度器。在大多数现代操作系统上,它通常能提供毫秒级别的精度,但不一定更精确。
  • 避免在需要高性能的循环中使用:在需要高性能的实时应用或紧密循环中,频繁调用 time.sleep() 可能会导致不必要的延迟和性能下降。
  • 多线程:在多线程环境中,time.sleep() 会暂停调用它的线程,但不会影响其他线程的执行。

计算代码运行时间

import time  
  
# 获取开始时间的时间戳  
start_time = time.time()  
  
# 放置你要测量执行时间的代码块  
# 例如,一个简单的循环  
for i in range(1000000):  
    pass  
  
# 获取结束时间的时间戳  
end_time = time.time()  
  
# 计算执行时间  
execution_time = end_time - start_time  
  
print(f"代码执行时间: {execution_time:.6f} 秒")

详细步骤说明

导入time模块:

import time

这是使用time模块中的函数的前提。

获取开始时间:

start_time = time.time()

time.time()函数返回当前时间的时间戳(即从1970年1月1日00:00:00起至现在的秒数)。这个时间戳作为代码块开始执行的时间点。

放置你要测量执行时间的代码块:

for i in range(1000000):  
    pass

我们用一个简单的空循环来模拟需要测量执行时间的代码块。你可以替换成任何你想测量的代码。

获取结束时间:

end_time = time.time()

同样使用time.time()函数来获取代码块执行结束后的时间戳。

计算执行时间:

execution_time = end_time - start_time

通过计算结束时间和开始时间的差值,得到代码块的执行时间。

打印执行时间:

print(f"代码执行时间: {execution_time:.6f} 秒")

使用格式化字符串(f-string)来打印执行时间,并保留6位小数。

注意事项

  • 精度:time.time()的精度取决于系统的时钟分辨率。对于更高精度的测量,可以考虑使用time.perf_counter(),它提供了更高分辨率的计数器,专门用于测量时间间隔。
  • 环境因素:执行时间会受到许多因素的影响,包括系统负载、其他正在运行的进程、硬件性能等。因此,多次运行并取平均值是一个更好的做法。

time.perf_counter()

如果你需要更高精度的测量,可以使用time.perf_counter():

import time  
  
# 获取开始时间  
start_time = time.perf_counter()  
  
# 放置你要测量执行时间的代码块  
for i in range(1000000):  
    pass  
  
# 获取结束时间  
end_time = time.perf_counter()  
  
# 计算执行时间  
execution_time = end_time - start_time  
  
print(f"代码执行时间: {execution_time:.6f} 秒")

time.perf_counter()提供了一个更精确的计数器,适合测量短时间间隔。它通常比time.time()更适合用于性能测量。

转换时区

在Python中,处理时间和时区转换通常涉及两个主要的模块:time 和 pytz。虽然 time 模块提供了基本的日期和时间功能,但处理时区转换时,pytz 模块通常更为强大和方便。
在这里插入图片描述

安装 pytz

首先,你需要安装 pytz 模块。如果你还没有安装,可以使用 pip 来安装:

pip install pytz

基本用法

from datetime import datetime  
import pytz  
  
# 获取当前UTC时间  
utc_now = datetime.utcnow()  
  
# 定义时区  
tz_new_york = pytz.timezone('America/New_York')  
tz_tokyo = pytz.timezone('Asia/Tokyo')  
  
# 将UTC时间转换为纽约时间  
ny_time = utc_now.astimezone(tz_new_york)  
  
# 将UTC时间转换为东京时间  
tokyo_time = utc_now.astimezone(tz_tokyo)  
  
print("UTC Time:", utc_now)  
print("New York Time:", ny_time)  
print("Tokyo Time:", tokyo_time)

将任意时间转换为指定时区

如果你有一个非UTC时间,并且想将其转换为另一个时区,可以先将其转换为UTC时间,然后再转换为目标时区。

from datetime import datetime  
import pytz  
  
# 定义一个非UTC时间(例如纽约时间)  
ny_time_str = '2023-10-05 14:30:00'  
ny_time_fmt = '%Y-%m-%d %H:%M:%S'  
ny_time_obj = datetime.strptime(ny_time_str, ny_time_fmt)  
  
# 定义纽约时区  
tz_new_york = pytz.timezone('America/New_York')  
  
# 将纽约时间转换为UTC时间  
ny_time_aware = tz_new_york.localize(ny_time_obj)  
utc_time = ny_time_aware.astimezone(pytz.utc)  
  
# 定义目标时区(例如东京时区)  
tz_tokyo = pytz.timezone('Asia/Tokyo')  
  
# 将UTC时间转换为东京时间  
tokyo_time = utc_time.astimezone(tz_tokyo)  
  
print("Original New York Time:", ny_time_obj)  
print("Converted UTC Time:", utc_time)  
print("Converted Tokyo Time:", tokyo_time)

注意事项

  • 时区定义:确保使用 pytz.timezone 方法时,提供的时区字符串是有效的。你可以在 pytz 的文档或 IANA 时区数据库中查找有效的时区字符串。
  • 时间本地化:当你有一个天真的时间(即没有时区信息的时间)时,你需要先使用 localize 方法将其转换为一个时区感知的时间,然后才能进行时区转换。
  • 夏令时:pytz 会自动处理夏令时(DST)的变化,所以你不需要担心夏令时导致的时区偏移问题。

时区的数量和定义

全球时区数量:

  • 地球被分为24个时区,每个时区大约覆盖经度15°的区域。但实际上,由于政治、历史等因素,时区的划分并不完全按照经度线来,导致有些地区的时区边界与经度线不完全一致。
  • 在pytz中,时区的数量并不是固定的24个,因为pytz包含了更详细的时区划分,例如某些国家或地区可能由于历史、政治原因而使用了特殊的时区规则。

时区的定义:

  • 在pytz中,时区是通过字符串来定义的,这些字符串遵循IANA时区数据库的命名规则。
  • 常见的时区定义格式是“Area/Location”,其中Area表示地理区域(如亚洲、美洲等),Location表示该区域内的具体地点(如上海、纽约等)。
  • 例如,“Asia/Shanghai”表示中国上海所在的时区,“America/New_York”表示美国纽约所在的时区。

使用pytz列出所有时区

可以使用pytz.all_timezones来获取pytz支持的所有时区的列表。这个列表包含了IANA时区数据库中所有时区的字符串表示。

import pytz  
  
# 获取所有时区的列表  
all_timezones = pytz.all_timezones  
  
# 打印时区列表  
for tz in all_timezones:  
    print(tz)

注意事项

时区更新:

  • 由于政治、历史等因素的变化,时区规则可能会发生变化。因此,你需要确保你使用的pytz库是最新的,以便获取最新的时区信息。
  • 可以通过运行pip install --upgrade pytz来更新pytz库。

时区名称:

  • 在使用pytz.timezone()函数时,你需要提供正确的时区字符串作为参数。如果你提供的字符串不是有效的时区名称,pytz会抛出一个异常。
  • 可以查阅pytz的文档或IANA时区数据库来获取有效的时区字符串列表。

夏令时:

  • pytz能够自动处理夏令时的转换。但是,有些时区可能已经停止使用夏令时,或者夏令时的规则发生了变化。因此,在进行时区转换时,你需要确保pytz中的时区信息是最新的。

推荐阅读

Python基础

Python全网最全基础课程笔记(一)——基础入门
Python全网最全基础课程笔记(二)——变量
Python全网最全基础课程笔记(三)——所有运算符+运算符优先级
Python全网最全基础课程笔记(四)——基本数据类型
Python全网最全基础课程笔记(五)——选择结构+Python新特性Match
Python全网最全基础课程笔记(六)——循环结构
Python全网最全基础课程笔记(七)——列表,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(八)——字典,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(九)——集合,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十)——元组,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十一)——字符串所有操作,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十二)——函数,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十三)——作用域,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!

Flink入门到就业

2024年最新Flink教程,从基础到就业,大家一起学习–基础篇
2024年最新Flink教程,从基础到就业,大家一起学习–入门篇
2024年最新Flink教程,从基础到就业,大家一起学习–Flink集群部署
2024年最新Flink教程,从基础到就业,大家一起学习–flink部署和集群部署(从本地测试到公司生产环境如何部署项目源码)
2024年最新Flink教程,从基础到就业,大家一起学习–Flink运行架构底层源码详解+实战
2024年最新Flink教程,从基础到就业,大家一起学习–Flink DataStream API-第一篇+源码讲解

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图解Linux文件属性与目录配置

Linux的文件属性十分重要,与windows的文件属性有很大不同,Linux的文件增加了许多属性,如读写、连接数、文件拥有者及所属群组。如果一个文件属于一个群组,那么这个群组的成员就可以访问,其他的群组就不能访问&#xff…

Qt中的网络客户端

目录 HttpClient http报文相关 HttpClient发送报文格式 x-www-form-urlencoded: multipart/form-data raw binary QUrl QNetworkAccessManager Http-Get Http-Post http-post:form-data ftp-up ftp-down QDesktopServices HttpClient http报文相关 URL是为了 统…

人机协作:科技与人类智慧的融合

随着科技的飞速发展,越来越多的领域开始借助人工智能(AI)和自动化技术来提升工作效率。人机协作(Human-Machine Collaboration)这一概念逐渐成为现代技术进步的核心。它不仅改变了我们的工作方式,也在重新定…

【STL】stack模拟实现

stack模拟实现比较简单&#xff0c;就是直接调用deque的函数即可。 具体实现&#xff1a; #pragma once#include<deque> #include<iostream>using std::istream; using std::ostream; using std::endl; using std::cout;namespace zyy { //stack -> 后进先出t…

python log函数怎么用

log() 返回 x 的自然对数。 语法 以下是 log() 方法的语法&#xff1a; import math math.log(x[, base]) 注意&#xff1a;log()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;通过静态对象调用该方法。 参数 x -- 数值表达式。 base -- 可选&#xff0c;底…

‌图片编辑为底片,智能工具助力,创作精彩视觉作品

在当今数字化时代&#xff0c;图像编辑已成为表达创意和美化视觉作品的重要手段。借助智能工具&#xff0c;即使是初学者也能轻松驾驭图片编辑。接下为大家展示图片编辑为底片图片的效果。 1.打开“首助编辑高手”&#xff0c;选择这里“图片批量处理”版块页面上 2.导入保存有…

C语言之三子棋游戏(附完整代码)

学了那么多关于C语言的知识&#xff0c;也该进行一下实操了。三子棋游戏应该是大家学生时代课间比较喜欢娱乐消遣的一种方式吧。那么我们今天就来说说如何实现简单版本的三子棋对战小游戏吧。 三子棋游戏介绍 三子棋游戏类似于五子棋&#xff0c;不同的是它的棋盘大小是九宫格…

LLM | Ollama 安装、运行大模型(CPU 实操版)

1. 操作步骤 1.1 安装 # 通过 homebrew 安装 brew install ollama1.2 验证&#xff08;可跳过&#xff09; # 输出命令使用提示则安装成功 ollama --help1.3 启动服务端 # 启动 ollama 服务&#xff08;默认在 11434 端口&#xff0c;模型文件在 ~/.ollama&#xff09; oll…

论文阅读笔记-Pre-trained Models for Natural Language Processing: A Survey

前言 预训练模型给下游任务带来的效果不言而喻,有了预训练模型,我们可以使用它来加速解决问题的过程。正如论文中所说的那样,预训练模型(PTMs)的出现将自然语言处理(NLP)带入了一个新时代。本篇论文基于分类从四个角度对现有PTMs进行系统分类,描述如何使PTMs的知识适应…

Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析

目录 前言HttpServlet &FrameworkServletHttpServlet #serviceFrameworkServlet#processRequest DispatcherServlet#doServicedoDispatchcheckMultipartgetHandlerAbstractHandlerMapping#getHandlerRequestMappingInfoHandlerMapping#getHandlerInternalAbstractHandlerMe…

Excel-查找和引用数据-VLOOKUP 和 HLOOKUP 函数

在 Excel 中&#xff0c;VLOOKUP 和 HLOOKUP 是用于查找和引用数据的函数。下面是它们的基本用法&#xff1a; VLOOKUP 用途&#xff1a;在表格的第一列中查找某个值&#xff0c;并返回该值所在行的指定列中的数据。 语法&#xff1a; VLOOKUP(lookup_value, table_array, …

多模态大语言模型(MLLM)-Blip2深度解读

前言 Blip2是一个多模态大语言模型&#xff0c;因其提出时间较早&#xff08;2023年&#xff09;&#xff0c;且效果较好&#xff0c;很快成为一个标杆性工作。Blip2中提出的Q-former也成为衔接多模态和文本的重要桥梁。 Blip2发表时间是2023年&#xff0c;现在引用已经3288了…

产品经理内容分享(一):AI产品经理需必备那些能力

目录 必备的AI技术知识 第一章&#xff1a;AI产品经理是否需要懂技术及其程度 第二章&#xff1a;AI产品经理必备的AI技术基础知识——基础算法与机器学习方法 第三章&#xff1a;AI产品经理必须要懂的AI技术知识——场景应用 第四章&#xff1a;AI算法与模型的关系 第五…

PhotoMaker部署文档

一、介绍 PhotoMaker&#xff1a;一种高效的、个性化的文本转图像生成方法&#xff0c;能通过堆叠 ID 嵌入自定义逼真的人类照片。相当于把一张人的照片特征提取出来&#xff0c;然后可以生成你想要的不同风格照片&#xff0c;如写真等等。 主要特点&#xff1a; 在几秒钟内…

求1000以内的完数

题目&#xff1a;一个数如果恰好等于他的因子之和&#xff08;包括1&#xff0c;但不包括这个数&#xff09;&#xff0c;这个数就是完数。编写算法找出1000之内的所有完数&#xff0c;并按下面格式输出其因子&#xff1a;28 its factors are 1,2,4,7,14 代码如下&#xff1a;…

Dell服务器电源配置

Dell服务器电源配置规则 PowerEdge 电源设置

医院综合服务系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;患者管理&#xff0c;医生管理&#xff0c;就诊信息管理&#xff0c;科室信息管理&#xff0c;挂号信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;订单排队&#…

《PyTorch深度学习快速入门教程》学习笔记(第15周)

目录 摘要 Abstract 1. 安装Anaconda 2. 查看显卡驱动 3. 安装Pytorch 4. Pytorch加载数据 5. 常用数据集两种形式 6. 路径直接加载数据 7. Dataset加载数据 摘要 本周报的目的在于汇报《PyTorch深度学习快速入门教程》课程第一周的学习成果&#xff0c;主要聚焦于py…

微服务Sleuth解析部署使用全流程

目录 1、Sleuth链路追踪 1、添加依赖 2、修改日志配置文件 3、测试 2、zipkin可视化界面 1、docker安装 2、添加依赖 3、修改配置文件 4、查看页面 5、ribbon配置 1、Sleuth链路追踪 sleuth是链路追踪框架&#xff0c;用于在微服务架构下开发&#xff0c;各个微服务之…

轻松部署大模型:Titan Takeoff入门指南

轻松部署大模型&#xff1a;Titan Takeoff入门指南 在人工智能的快速发展中&#xff0c;处理自然语言处理&#xff08;NLP&#xff09;任务的大规模语言模型&#xff08;LLM&#xff09;至关重要。然而&#xff0c;部署这些模型往往具有挑战性&#xff0c;需要高性能的硬件和优…