Global
UnixNano - 获取纳秒级时间戳
获取当前时刻的纳秒级 Unix 时间戳。
语法
python
timestamp = UnixNano()参数
无参数。
返回值
返回当前时刻的纳秒级 Unix 时间戳(number)。
示例
示例1: 获取纳秒级时间戳
python
# 获取纳秒级时间戳
ts = UnixNano()
Log(f"当前纳秒级时间戳: {ts}")
# 输出示例: 1574993606123456789示例2: 性能测试
python
# 测量代码执行时间(纳秒级精度)
start = UnixNano()
# 执行一些操作
for i in range(1000):
exchange.GetTicker()
end = UnixNano()
elapsed_ns = end - start
elapsed_ms = elapsed_ns / 1_000_000 # 转换为毫秒
Log(f"执行耗时: {elapsed_ns} 纳秒")
Log(f"执行耗时: {elapsed_ms:.2f} 毫秒")示例3: 生成唯一标识
python
# 使用纳秒时间戳生成唯一ID
order_id = f"ORDER_{UnixNano()}"
Log(f"订单ID: {order_id}")
# 输出: ORDER_1574993606123456789示例4: 高精度时间间隔测量
python
import time
# 测量 Sleep 的实际精度
start = UnixNano()
Sleep(100) # 睡眠 100 毫秒
end = UnixNano()
actual_sleep = (end - start) / 1_000_000 # 转换为毫秒
Log(f"预期睡眠: 100 毫秒")
Log(f"实际睡眠: {actual_sleep:.3f} 毫秒")
Log(f"误差: {abs(actual_sleep - 100):.3f} 毫秒")示例5: 请求速率控制
python
class RateLimiter:
def __init__(self, max_requests_per_second):
self.interval_ns = 1_000_000_000 // max_requests_per_second
self.last_request_time = 0
def wait_if_needed(self):
"""如果请求过快,等待到允许时间"""
now = UnixNano()
if self.last_request_time > 0:
elapsed = now - self.last_request_time
if elapsed < self.interval_ns:
wait_ns = self.interval_ns - elapsed
wait_ms = wait_ns / 1_000_000
Sleep(int(wait_ms))
self.last_request_time = UnixNano()
# 限制为每秒最多 10 次请求
limiter = RateLimiter(10)
for i in range(20):
limiter.wait_if_needed()
ticker = exchange.GetTicker()
Log(f"第 {i+1} 次请求完成")示例6: 对比不同时间精度
python
import time
# 获取不同精度的时间戳
ts_seconds = Unix() # 秒级
ts_ms = int(time.time() * 1000) # 毫秒级
ts_ns = UnixNano() # 纳秒级
Log(f"秒级时间戳: {ts_seconds}")
Log(f"毫秒级时间戳: {ts_ms}")
Log(f"纳秒级时间戳: {ts_ns}")
# 输出示例:
# 秒级时间戳: 1574993606
# 毫秒级时间戳: 1574993606123
# 纳秒级时间戳: 1574993606123456789注意事项
-
精度差异:
- Unix() 返回秒级时间戳(10位数字)
- 毫秒级时间戳(13位数字)
- UnixNano() 返回纳秒级时间戳(19位数字)
-
应用场景:
- 性能测试和基准测试
- 高精度时间间隔测量
- 生成唯一标识符
- 精确的请求速率控制
-
数值范围: 纳秒级时间戳是一个很大的数字,注意数值溢出
-
系统时钟: 依赖于系统时钟,系统时钟调整会影响结果