多线程适合IO密集型任务,CPU密集型应选多进程;用ThreadPoolExecutor比原生threading更安全易管理;需注意线程安全、异常捕获与超时控制。
自动化脚本实现多线程处理,核心是让多个任务并行执行,提升整体效率,但不是所有场景都适合——IO密集型(如网络请求、文件读写)收益明显,CPU密集型(如大量计算)反而可能因GIL限制变慢,需优先考虑多进程。
先判断脚本主要耗时在哪:
比原生 threading 更安全、易管理。示例:同时请求10个URL
from concurrent.futures import ThreadPoolExecutor, as_completed import requestsdef fetch_url(url): try: return url, requests.get(url, timeout=5).status_code except Exception as e: return url, f"Error: {e}"
urls = ["https://www./link/5f69e19efaba426d62faeab93c308f5c"] * 10
with ThreadPoolExecutor(max_workers=4) as executor:
提交全部任务
futures = [executor.submit(fetch_url, u) for u in urls] # 按完成顺序获取结果 for future in as_completed(futures): url, result = future.result() print(f"{url} → {result}")关键点:max_workers 控制并发数,一般设为 CPU核数×2~5(IO密集型可更高);as_completed 返回完成即处理,不按提交顺序。
线程安全与资源协调不能忽略
多个线程共享内存,操作全局变量、写同一文件、共用数据库连接时容易出错:
一个线程崩溃默认不会中断其他线程,也不向上抛错,容易“静默失败”:
基本上就这些。多线程不是万能加速键,关键是识别瓶颈、合理分发、守住边界。跑通第一个 ThreadPoolExecutor 示例后,再逐步加上锁、队列、错误重试,就稳了。