在 Python 中,多线程主要通过标准库 threading 模块来实现。下面从基础用法 → 常见场景 → 注意事项逐步说明。
import threading
import time
def worker(name):
print(f"{name} 开始")
time.sleep(2)
print(f"{name} 结束")
# 创建线程
t1 = threading.Thread(target=worker, args=("线程1",))
t2 = threading.Thread(target=worker, args=("线程2",))
# 启动线程
t1.start()
t2.start()
# 等待线程结束
t1.join()
t2.join()
print("主线程结束")
✅ target:线程要执行的函数
✅ args:传给函数的参数(必须是元组)
✅ start():启动线程
✅ join():等待线程执行完
import threading
class MyThread(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
print(f"{self.name} 正在运行")
t = MyThread("线程A")
t.start()
t.join()
import threading
count = 0
lock = threading.Lock()
def task():
global count
for _ in range(100000):
with lock:
count += 1
threads = []
for _ in range(5):
t = threading.Thread(target=task)
threads.append(t)
t.start()
for t in threads:
t.join()
print(count)
✅ 使用 threading.Lock() 避免竞态条件
适合大量短任务:
from concurrent.futures import ThreadPoolExecutor
def task(n):
return n * n
with ThreadPoolExecutor(max_workers=4) as executor:
results = executor.map(task, range(10))
print(list(results))
✅ 自动管理线程
✅ 避免频繁创建销毁线程
✅ CPU 密集型建议用:
multiprocessing(多进程)asyncio| 场景 | 是否适合多线程 |
|---|---|
| 网络请求 | ✅ 非常适合 |
| 文件读写 | ✅ 适合 |
| 大量计算 | ❌ 不适合 |
| 高并发服务 | ✅ + 线程池 |
如果你愿意,我可以:
你现在是打算用多线程做什么?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。