主页 > 电脑硬件  > 

pythonconcurrent.futures

pythonconcurrent.futures
concurrent.futures 线程池核心类:ThreadPoolExecutor 构造函数参数 ThreadPoolExecutor(max_workers=None, thread_name_prefix='', ...) * max_workers:最大线程数,默认为CPU核心数×514。 * thread_name_prefix:线程名前缀(Python 3.6+支持)。 二、核心函数及方法 提交任务:submit() from concurrent.futures import ThreadPoolExecutor def task(n): return n * 2 with ThreadPoolExecutor(max_workers=3) as executor: future = executor.submit(task, 5) # 提交单个任务 * 返回 Future 对象,可通过 .result() 获取结果(阻塞) 批量提交:map() results = executor.map(task, [1, 2, 3]) # 按顺序返回结果迭代器 * 适合处理有序任务,结果顺序与输入一致。 等待完成:wait() from concurrent.futures import wait futures = [executor.submit(task, i) for i in range(5)] done, not_done = wait(futures, timeout=2, return_when="FIRST_COMPLETED") * return_when:可选 ALL_COMPLETED(默认)、FIRST_COMPLETED、FIRST_EXCEPTION。 add_done_callback() def callback(future): print(f"Result: {future.result()}") future.add_done_callback(callback) # 任务完成时自动触发 as_completed() from concurrent.futures import as_completed for future in as_completed(futures): print(future.result()) 参数进阶说明 任务队列机制: 当线程数达 max_workers,新任务进入队列等待(默认使用无界队列 queue.Queue)。线程复用: 空闲线程存活时间由内部管理,Python未暴露参数(与Java不同)。拒绝策略: 队列满时默认抛出 queue.Full 异常,需自行处理 示例 多参数任务 def complex_task(a, b, c=0): return a + b + c # 参数传递方式 future = executor.submit(complex_task, 1, 2, c=3) 网页抓取(I/O密集型) import requests def fetch(url): response = requests.get(url) return response.status_code urls = ["http://example "] * 10 with ThreadPoolExecutor(5) as executor: results = list(executor.map(fetch, urls)) 动态任务进度监控 from tqdm import tqdm futures = [executor.submit(task, i) for i in range(100)] for f in tqdm(as_completed(futures), total=len(futures)): pass # 实时显示完成进度

CPU密集型:线程数 ≤ CPU核心数。 I/O密集型:线程数可设较高(如50-100)

标签:

pythonconcurrent.futures由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“pythonconcurrent.futures