Linux 获取微秒(Microseconds)的多种方法
在 Linux 环境下,根据应用场景的不同(命令行操作、C/C++ 开发或 Python 脚本),有多种方式可以获取微秒级的时间精度。
使用命令行 (Shell)
如果你在终端中需要快速查看当前时间或在 Shell 脚本中使用,可以使用 date 命令。
- 获取当前纳秒并截取微秒:
date +%N会输出 9 位纳秒数,通过截取前 6 位可以得到微秒。date +%N | cut -c1-6
- 获取 Unix 时间戳(带微秒):
如果你需要“秒.微秒”的格式,可以使用:date +%s.%6N
注:
%6N在某些版本的 GNUdate中可以直接截取前 6 位纳秒,即微秒。
使用 C/C++ 编程
在系统级编程中,通常使用 POSIX 标准提供的函数。
-
使用
gettimeofday函数(最常用):
这是获取微秒级时间最经典的方法,返回一个struct timeval结构体,其中包含tv_sec(秒)和tv_usec(微秒)。#include <sys/time.h> #include <stdio.h> int main() { struct timeval tv; gettimeofday(&tv, NULL); printf("Seconds: %ld, Microseconds: %ldn", tv.tv_sec, tv.tv_usec); return 0; } -
使用
clock_gettime函数(更高精度):clock_gettime提供纳秒级精度,通过将纳秒除以 1000 即可得到微秒,它比gettimeofday 更推荐,因为它支持单调时钟(
CLOCK_MONOTONIC),可以避免系统时间跳变(如 NTP 同步)导致的时间误差。#include <time.h> #include <stdio.h> int main() { struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); long microseconds = ts.tv_sec 1000000L + ts.tv_nsec / 1000; printf("Total microseconds: %ldn", microseconds); return 0; }
使用 Python 编程
Python 提供了非常简洁的接口来处理高精度时间。
- 使用
time.time():
返回一个浮点数,包含秒和小数部分(小数部分即为微秒/纳秒)。
import time print(time.time()) # 输出类似 1678912345.123456 - 使用
time.time_ns()(推荐):
从 Python 3.7 开始,可以使用此函数获取纳秒整数,通过整除 1000 得到精确的微秒。import time microseconds = time.time_ns() // 1000 print(microseconds)
总结与建议
- 简单查看/脚本编写:直接使用
date +%s.%6N。 - 高性能/系统开发:优先使用
clock_gettime并配合CLOCK_MONOTONIC以保证时间流逝的连续性。 - 快速原型/数据处理:使用 Python 的
time.time_ns()。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/489158.html



