python 多线程编程

多线程thread / 多进程process / 多协程coroutine

三者选择

GIL的存在

利用多线程加快程序速度

实战框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import threading
import time

# 任务函数:每个线程执行这个
def worker(name):
for i in range(3):
print(f"线程 {name} 正在工作... 第 {i+1} 次")
time.sleep(1)

# 创建线程列表
threads = []
names = ["A", "B", "C"] # 三个线程的名字

# 1️⃣ 第一个 for 循环:创建并启动所有线程
for name in names:
t = threading.Thread(target=worker, args=(name,))
threads.append(t)
t.start() # 启动线程(不等待)

# 2️⃣ 第二个 for 循环:等待所有线程结束
for t in threads:
t.join() # 主线程在这里等待每个线程完成

print("✅ 所有线程已执行完毕!")

线程池

线程池

1
2
3
4
5
6
7
8
9
10
from concurrent.futures import ThreadPoolExecutor

def task(n):
return f"任务 {n} 完成"

with ThreadPoolExecutor(max_workers=5) as pool:
results = pool.map(task, range(5)) # 自动把 range(5) 分给线程

for r in results:
print(r)