python3 50个练习例子之线程池练习

本文通过50个实例详细介绍了Python3中的线程池使用,包括使用concurrent.futures.ThreadPoolExecutor创建线程池,利用as_completed无序获取任务结果,使用executor.map保持执行顺序,以及如何控制线程执行后的操作,包括有无控制的线程等待。
摘要由CSDN通过智能技术生成
  1. 创建线程池(concurrent.futures.ThreadPoolExecutor)
from concurrent.futures import ThreadPoolExecutor
import time
# 模拟请求html延迟
def get_html(times):
    time.sleep(times)
    return times
# __init__(self, max_workers=None, thread_name_prefix='')
executor = ThreadPoolExecutor(2) # 创建2个线程 也可以传参max_workers=2

# 通过submit函数提交执行的函数到线程池中,submit函数立即返回,不阻塞
# submit(fn, *args, **kwargs)
task1 = executor.submit(get_html,3) # 传入参数3,返回Future实例

task2 = executor.submit(get_html,2) # 传入参数2

task3 = executor.submit(get_html,1)

# done方法用于判定某个任务是否完成

print(task1.done()) # False

# cancel 方法用于取消某个任务,该任务还没放入线程池中才能取消
print(task3.cancel()) # True 线程数只有2个,提交了3个任务,第3个未加入,可取消
time.sleep(5)
print(task1.done()) # True

# result方法可以获取task的执行结果,阻塞
print(task1.result()) # 3
  1. 获取所有返回结果,无顺序(concurrent.futures.as_completed)
如果等待多个执行结果,用判断是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值