精通 Python time.sleep():最佳实践、多线程与实战案例
Python time.sleep() 详解
time.sleep() 将当前线程暂停指定秒数。
Python 的 time 模块提供一系列时间处理工具。其中,time.sleep() 是添加刻意延迟、同步线程或限流操作的关键函数。
示例 1:基本用法
import time
print("立即打印。")
time.sleep(2.4)
print("2.4 秒后打印。")
此简单脚本演示 time.sleep() 接受浮点数参数。Python 3.5 及以上版本保证最小睡眠时长;早期版本可能睡眠略长。
示例 2:数字时钟
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local))
time.sleep(1)
循环每秒打印一次当前本地时间。为避免终端刷屏,改进版在同一行更新:
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local), end="", flush=True)
print("\r", end="", flush=True)
time.sleep(1)
更多细节请参阅 Python 官方 time.sleep() 文档。
理解线程
进程是正在执行的程序;线程是进程内的轻量级单元。多线程可并发运行,共享同一内存空间。
示例 3:简单多线程
import threading
def greet_hello():
for _ in range(3):
print("Hello")
def greet_hi():
for _ in range(3):
print("Hi")
t1 = threading.Thread(target=greet_hello)
t2 = threading.Thread(target=greet_hi)
t1.start()
t2.start()
由于 t1 和 t2 并发执行,每次运行的输出顺序可能不同。
多线程环境中的 time.sleep()
在单线程程序中,time.sleep() 会阻塞整个进程。在多线程环境下,仅调用线程被暂停,其他线程继续运行。
示例 4:差异化暂停线程
import threading, time
def say_hello():
for _ in range(4):
time.sleep(0.5)
print("Hello")
def say_hi():
for _ in range(4):
time.sleep(0.7)
print("Hi")
t1 = threading.Thread(target=say_hello)
t2 = threading.Thread(target=say_hi)
t1.start()
t2.start()
此处一个线程睡眠 0.5 秒,另一个睡眠 0.7 秒,展示独立节奏。
更多线程内容请参阅 Python threading 模块文档。
Python