什么是多线程?
多线程是一种并发执行的方式,可以让程序同时执行多个任务,提高程序的效率。
基本使用
import threading
import time
def task(name, delay):
print(f'任务{name}开始')
time.sleep(delay)
print(f'任务{name}完成')
# 创建线程
t1 = threading.Thread(target=task, args=('A', 2))
t2 = threading.Thread(target=task, args=('B', 1))
# 启动线程
t1.start()
t2.start()
# 等待完成
t1.join()
t2.join()
print('所有任务完成')
线程池
from concurrent.futures import ThreadPoolExecutor
def task(n):
return n * n
with ThreadPoolExecutor(max_workers=5) as executor:
results = list(executor.map(task, range(10)))
print(results)
共享数据与锁
import threading
counter = 0
lock = threading.Lock()
def increment():
global counter
for _ in range(100000):
with lock:
counter += 1
何时使用多线程?
| 场景 | 适用性 |
|---|---|
| 网络请求/IO操作 | 非常适合 |
| 文件读写 | 适合 |
| CPU密集计算 | 不如多进程 |
| 简单并行任务 | 适合 |
注意
Python的GIL限制了多线程对CPU密集任务的加速。对于CPU密集任务,建议使用多进程(multiprocessing模块)。
总结
多线程是处理IO密集型任务的有力工具,合理使用能显著提升程序性能。