线程池-The End

本文介绍了Python中concurrent.futures模块的线程池(ThreadPoolExecutor)和进程池(ProcessPoolExecutor)的基本使用方法,包括异步任务提交、结果获取、回调函数等特性,并通过示例展示了如何利用线程池提高程序效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程池-The End

线程池介绍

线程池是一个全新的模块-- from concurrent.futures import ThreadPoolExecutor

concurrent.futures模块提供了高度封装的异步调用接口
ThreadPoolExecutor:线程池,提供异步调用
ProcessPoolExecutor: 进程池,提供异步调用

线程池与进程池的用法完全一样,提供的接口也是完全一致的

线程池不提供同步提交任务的方法,只有异步提交
submit()

shutdown(wait) 相当于进程池的pool.close + pool.join()的操作
wait = True 等待池内所有任务执行完毕回收玩资源后才继续
wait = False 立即返回,并不会等待池内的任务执行完毕

submit 和 map 必须在shutdown之前

map 拿不到返回值

result() 取结果

add_done_callback(fn) 回调函数

import time
from concurrent.futures import ThreadPoolExecutor

def func(n):
    time.sleep(1)
    print(f'[{n}]',end='\t')
    return n*n

tp = ThreadPoolExecutor(max_workers=3)

for i in range(1,22):
    t = tp.submit(func,i)
    print(f'{i}的幂为:',t.result(),end='\t')
    if i %3 == 0:
        print()
tp.shutdown() # 相当于close+join  没有shutdown会更高效
print()
print('所有子进程结束!')

'''
[1] 1的幂为: 1     [2] 2的幂为: 4     [3] 3的幂为: 9 
[4] 4的幂为: 16    [5] 5的幂为: 25    [6] 6的幂为: 36    
[7] 7的幂为: 49    [8] 8的幂为: 64    [9] 9的幂为: 81    
[10]    10的幂为: 100  [11]    11的幂为: 121  [12]    12的幂为: 144  
[13]    13的幂为: 169  [14]    14的幂为: 196  [15]    15的幂为: 225  
[16]    16的幂为: 256  [17]    17的幂为: 289  [18]    18的幂为: 324  
[19]    19的幂为: 361  [20]    20的幂为: 400  [21]    21的幂为: 441  

所有子进程结束!
'''

回调函数

import time
from concurrent.futures import ThreadPoolExecutor

def func(n):
    time.sleep(1)
    return n*n

def task(m):
    print(f'******{m.result()}*******')

tp = ThreadPoolExecutor(max_workers=3)

for i in range(3):
    tp.submit(func,i).add_done_callback(task)
    
'''
******0*******
******1*******
******4*******
'''

转载于:https://www.cnblogs.com/dadazunzhe/p/11545541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值