Python线程池

2023-11-03

Python可以配置线程池,线程池的作用:

  • 预先开启设定的线程。当一个线程结束以后可以让程序继续使用该线程。

  • 设置线程的最大数目,让系统不至于因为开启多个线程而崩溃。

  • 在有大量空闲时间的进程中,配置多线程可以让程序并行处理,提高处理速度。


线程池的基类是 concurrent.futures 模块中的 Executor,Executor 提供了两个子类,即 ThreadPoolExecutor 和 ProcessPoolExecutor,其中 ThreadPoolExecutor 用于创建线程池,而 ProcessPoolExecutor 用于创建进程池。

  • Python的线程是有GIL锁的,所以是单核的。
  • Python的进程每个都有独立的GIL锁,所以是多核的,但是每个都需要独立的分配内存空间,所以空间占用大

使用线程池来执行线程任务的步骤如下:

  • 调用 ThreadPoolExecutor 类的构造器创建一个线程池。
  • 定义一个普通函数作为线程任务。
  • 调用 ThreadPoolExecutor 对象的 submit() 方法来提交线程任务。
  • 调用 ThreadPoolExecutor 对象的 shutdown(wait = True) 方法来关闭线程池。
def fun(index):
	print(index)
	time.sleep(3)
	
from concurrent.futures import ThreadPoolExecutor
theard_pool = ThreadPoolExecutor(max_workers=2)
for i in range(1000):
	thread_pool.submit(fun, i)
thread_pool.shutdown(wait= True)

有这么几个问题:

  • 按照逻辑而言,不一定能保证严格有序
  • 所有的任务都扔进队列实现的,所以在处理tb级别的数据的时候会出现溢出???(需要确认)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python线程池 的相关文章

随机推荐

  • ElasticSearch 双数据中心建设在新网银行的实践

    本文公众号读者飞熊的投稿 本文主要讲述了ElasticSearch 双数据中心建设在新网银行的实践 作者简介 飞熊 目前就职于新网银行大数据中心 主要从事大数据实时计算和平台开发相关工作 对Flink Spark 以及ElasticSear
  • goland语法面试题

    文章目录 1 关于 switch 语句 下面说法正确的是 2 下面代码能编译通过吗 可以的话 输出什么 3 interface 是可以指向任意对象的 Any 类型 是否正确 4 下面的代码有什么问题 1 关于 switch 语句 下面说法正
  • Unity5热更新ILRuntime 使用 Protobuf3.0

    Unity5热更新ILRuntime 使用 Protobuf3 0 须知 1 pb3官方用到了C 很多的新语法 所以在unity主工程中直接撸码是不可以的 还好github上面有同僚作了framework35版的 2 ILrt中的类目前是不
  • R语言与面向对象的编程(3):R6类

    专注系列化 高质量的R语言教程 本号已支持快捷转载 无需白名单即可转载 本系列将介绍R语言中三个与面向对象的编程 Object Oriented Programming OOP 相关的工具包 proto R6和基础包methods 这是一个
  • python中,@和-> 代表什么?

    今天把代码放到Hadoop平台时调试代码的时候报错 但是在本地测试并没有什么问题 然后可查看了下代码 报错的地方这么定义的 看到这个符号觉得很奇怪 因为在Python中确实没见过这个符号 后来查了一下 参考这个博主写的 https blog
  • noip2008 火柴棒等式 (暴力枚举)

    P1496火柴棒等式 Accepted 标签 搜索 NOIP提高组2008 描述 给你n根火柴棍 你可以拼出多少个形如 A B C 的等式 等式中的A B C是用火柴棍拼出的整数 若该数非零 则最高位不能是0 用火柴棍拼数字0 9的拼法如图
  • 算法基础\BFS\DFS

    1 200 岛屿数量 题目描述 给你一个由 1 陆地 和 0 水 组成的的二维网格 请你计算网格中岛屿的数量 岛屿总是被水包围 并且每座岛屿只能由水平方向和 或竖直方向上相邻的陆地连接形成 此外 你可以假设该网格的四条边均被水包围 示例 示
  • 41.cuBLAS开发指南中文版--cuBLAS中的Level-2gemvBatched()

    2 6 24 cublas
  • numpy 三维矩阵下采样小技巧

    问题描述 我们有一个 160 192 224 的三维矩阵 由于其过大 跑神经网络时显存不够 此时我们的一个思路就是对其进行一个简单的下采样 即没3x3x3的小方格里只取其中间的那个数 现在的问题是如何快速高效地实现这个计算 而不是使用多个f
  • 爬虫代理IP池怎么来的,可能遇到哪些问题,怎么解决

    目录 前言 一 代理IP对爬虫工作的重要性 二 代理IP池从哪里来 三 爬虫工作中可能会遇到哪些问题 四 怎么解决遇到的问题 总结 前言 爬虫工作离不开代理IP的支持 代理IP在爬虫工作中发挥重要的作用 但爬虫代理IP池从哪里来呢 爬虫工作
  • 口令破解(概述、暴力破解、字典破解、Hydra)

    文章目录 口令破解 概述 口令安全现状 破解方式 暴力破解 字典破解 Hydra quarkspwdump 口令破解 概述 现在很多地方都以用户名 账号 和口令 密码 作为鉴权的方式 口令 密码 就意味着访问权限 口令 密码 就相当于进入家
  • sata接口_无线网卡M.2(ngff) keyA/E接口扩展sata硬盘接口,黑群辉NAS系统

    miniPC普及 主板小型化后 PCIE接口数量减少到1 2个 甚至没有 sata接口数量也大幅减少 这样的主板对于想使用多硬盘 特别是要黑群辉NAS系统的 是不适合的 好在某些主板有无线网卡M 2 ngff 接口 为扩展sata存留了希望
  • 华为手机助手上架流程_2019年各大安卓应用商店上架经验,含流程,物料,方法,建议收藏...

    注册应用商店账号 申请应用商店上架是APP推广的第一步 这一步没做好 会延迟甚至耽误后续的工作 因此 做好上架工作尤为重要 今天姑婆根据我们自己APP上架的经验进行了整理 分享给大家 希望对大家有所帮助 一 安卓应用商店格局 据调查显示在中
  • 【ubuntu】安装tensorRT

    tensorRT官方安装文档TensorRT3 Installation Guide RC pdf位于tensorRT下载页面 1 tensorRT下载 将tensorRT下载到想要安装的目录 https developer nvidia
  • Java字符串

    文章目录 Java字符串 一 Java常用 API 二 String 类 1 String 类的特点 1 Java 程序中所有双引号字符串 都是 String 类的对象 2 字符串在创建之后 其内容不可更改 3 字符串虽然不可改变 但是可以
  • 在vite+vue3项目下el-image引用本地图片失败

    地址使用 xxx xxxx 绝对路径 地址使用require xx xx 和require xx xx 地址使用相对路径不行 xxx xxx
  • Unity 动态鼠标切换

    Header 获得需要替换的鼠标纹理 SerializeField private Texture2D cursorTexture private void OnMouseEnter 鼠标进入更换鼠标纹理 Cursor SetCursor
  • SpringBoot默认的日志管理logback

    1 SpringBoot使用的默认日志框架是Logback 并用INFO级别输出到控制台 日志输出内容元素具体如下 时间日期 精确到毫秒 日志级别 ERROR WARN INFO DEBUG TRACE 进程ID 分隔符 标识实际日志的开始
  • 为什么说声明式API比命令式API更优雅?

    点击上方 分布式实验室 关注公众号 回复 1 抽取纸质技术书 越来越多的工具已经从命令式范式转变为声明式范式 在本文中 我提出了一个框架 以帮你系统理解 React Kubernetes Terraform 等工具的架构 这些工具将有状态逻
  • Python线程池

    Python可以配置线程池 线程池的作用 预先开启设定的线程 当一个线程结束以后可以让程序继续使用该线程 设置线程的最大数目 让系统不至于因为开启多个线程而崩溃 在有大量空闲时间的进程中 配置多线程可以让程序并行处理 提高处理速度 线程池的