美文网首页
02、线程学习之——线程池

02、线程学习之——线程池

作者: 牛在A和C之间 | 来源:发表于2020-07-28 16:29 被阅读0次

线程池的作用

系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。在这种情形下,使用线程池可以很好地提升性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。

线程池在系统启动时即创建大量空闲的线程,程序只要将一个函数提交给线程池,线程池就会启动一个空闲的线程来执行它。当该函数执行结束后,该线程并不会死亡,而是再次返回到线程池中变成空闲状态,等待执行下一个函数。

此外,使用线程池可以有效地控制系统中并发线程的数量。当系统中包含有大量的并发线程时,会导致系统性能急剧下降,甚至导致 Python 解释器崩溃,而线程池的最大线程数参数可以控制系统中并发线程的数量不超过此数。

在用完一个线程池后,应该调用该线程池的 shutdown() 方法,该方法将启动线程池的关闭序列。调用 shutdown() 方法后的线程池不再接收新任务,但会将以前所有的已提交任务执行完成。当线程池中的所有任务都执行完成后,该线程池中的所有线程都会死亡。

import threading
import time
from concurrent.futures.thread import ThreadPoolExecutor

def run():
    pass

def main_use_executer():
    """使用ThreadPoolExecutor来优化 """
    # 假设pc最多只能运行10个线程
    t1 = time.time()
    n_list = range(100)
    with ThreadPoolExecutor(max_workers=10) as executor:
        executor.map(run,n_list)
    print(time.time() - t1)

if __name__ == '__main__':
    main_use_executer()


相关文章

  • [第三篇]深入学习线程池之优雅的关闭线程池

    通过 《深入学习线程池之线程池简介及工作原理》、《深入学习线程池之通过ThreadPoolExecutor创建线程...

  • 02、线程学习之——线程池

    线程池的作用 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。在这种情形下,使用线程池可以很好地提...

  • 线程池创建和相关知识

    线程池创建(单例):Android线程池得要这么用 - 简书 线程池相关知识:Android开发之线程池使用总结 ...

  • 线程池再探

    线程池源码之execute execute: 总体来说就是: 如果线程的数量小于线程池的核心线程数直接创建线程执行...

  • Java学习Day14

    今日学习内容总结 线程池 Lambda表达式 线程池 线程池: 其实就是一个容纳多个线程的容器,其中的线程可以反复...

  • java线程池

    线程VS线程池 普通线程使用 创建线程池 执行任务 执行完毕,释放线程对象 线程池 创建线程池 拿线程池线程去执行...

  • Java 线程池之线程返回值

    前言 线程池系列文章: Java 线程池之线程返回值[https://www.jianshu.com/p/506f...

  • Java 线程池之必懂应用-原理篇(下)

    前言 线程池系列文章: Java 线程池之线程返回值[https://www.jianshu.com/p/506f...

  • Java 线程池之必懂应用-原理篇(上)

    前言 线程池系列文章: Java 线程池之线程返回值[https://www.jianshu.com/p/506f...

  • Java线程池的使用

    线程类型: 固定线程 cached线程 定时线程 固定线程池使用 cache线程池使用 定时调度线程池使用

网友评论

      本文标题:02、线程学习之——线程池

      本文链接:https://www.haomeiwen.com/subject/ulafrktx.html