Python知识点20---池

提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。

如果看了我发的线程和进程的知识点的朋友,如果发散思维能力很强,那么可能会出现一个,就是我操作线程和进程的方法很low,导致两个问题

一是如果有很多需要创建的线程或进程一个一个的创建那要累死,而写for循环也不好控制

二是我写的操作方法,貌似只能操作普通的函数,而对于类的方法来说就是个灾难,因为会受self参数的影响,不传吧,报错,传吧,不知道传什么

所以在这篇博文中对操作线程和进程做一个补充,首先之前我操作的方法,是为了初学者能够直接看明白,但其实在正经开发中我们不会那样使用,我们会使用


下面看一下怎么使用进程池,并且在类中使用!!!!解决大家对self的疑惑

import multiprocessing 
import os,timeclass Stu :def pri(self):print('--------进程',os.getpid(),'开始执行代码')time.sleep(2)print('--------进程',os.getpid(),'结束执行')def run(self) :#创建一个进程池,最多有6进程pool = multiprocessing.Pool(6)#循环,模拟向进程池中提交任务,直接通过self传递for i in range(10) :pool.apply_async(self.pri)#关闭池不在接收新的进程,一定要先关闭,不然提交动作会导致停止不了线程池pool.close()#等待池中的进程执行完毕,程序彻底结束,一定要调用这个方法,不然程序直接就是结束了pool.join()if __name__ == '__main__' :stu = Stu()stu.run()结果:
--------进程 4220 开始执行代码
--------进程 12500 开始执行代码
--------进程 9880 开始执行代码
--------进程 7028 开始执行代码
--------进程 696 开始执行代码
--------进程 11832 开始执行代码
--------进程 4220 结束执行
--------进程 12500 结束执行
--------进程 4220 开始执行代码
--------进程 12500 开始执行代码
--------进程 9880 结束执行
--------进程 696 结束执行
--------进程 7028 结束执行
--------进程 9880 开始执行代码
--------进程 696 开始执行代码
--------进程 11832 结束执行
--------进程 4220 结束执行
--------进程 12500 结束执行
--------进程 696 结束执行
--------进程 9880 结束执行

对普通方法使用进程池就不演示了,毕竟和之前的操作原理是一样的


下面看一下如何操作线程池,同样的直接演示在类中操作

from concurrent.futures import ThreadPoolExecutor,waitclass Stu :def myInfe(self) :print('-------')def run(self) :#创建一个线程池executor = ThreadPoolExecutor(max_workers=2)#提交一个任务task1 = executor.submit(self.myInfe)wait([task1])#这个方法的任务参数必须是列表if __name__ == '__main__' :stu = Stu()stu.run()

上面这个是Python直接可以使用的线程池模块,我也给大家找了一个资源,详细的介绍了怎么使用它,大家有兴趣可以看看–》Python官方线程池的使用

但是大家注意,在Python开发中还有一种线程池,这个线程池不是Python直接自带的,你想要使用需要另外下载一个threadpool的包才可以,使用方法如下

import threadpooldef ThreadFun(arg1,arg2):  print(arg1+arg2)def main():  device_list=[(1,2),(3,4),(5,6)]#准备参数task_pool=threadpool.ThreadPool(2)#2是线程池中最大线程的个数  request_list=[]#存放任务列表 #首先构造任务列表  for device in device_list:  request_list.append(threadpool.makeRequests(ThreadFun,device))#将每个任务放到线程池中,等待线程池中线程各自读取任务,然后进行处理,使用了map函数,不了解的可以去了解一下。  [ task_pool.putRequest(re) for re in request_list] #等待所有任务处理完成,则返回,如果没有处理完,则一直阻塞  task_pool.poll()main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试(五)

目录 1. 知道大顶堆小顶端吗,代码怎么区分大顶端小顶端 2. 计算机中栈地址与内存地址增长方向相反吗? 3. %p和%d输出指针地址 4. 为什么定义第二个变量时候,地址反而减了 5. 12,32,64位中数据的占字节?…

物质的量质量,它们可不是一个概念

物质的量&质量,它们可不是一个概念。 物质的量&质量 乍一听物质的量,还以为是和质量有什么关系,是不是?其实物质的量和质量没什么直接的联系。 物质的量是国际单位制中7个基本物理量之一,其符号为n&#xf…

Aras Innovator-Team(群组)的使用方法

当Aras Innovator在处理权限时,在不使用Team的情况下,系统的权限配置可以满足大部分业务场景,如:常见的按照组织架构,成员和角色分配权限,按照生命周期分配权限等。 如果遇到比较复杂的权限需求&#xff0c…

AltiumDesigner/AD添加数据库连接

1.首先确保本机电脑有无对应的数据库驱动,例如我这边要添加MySQL的数据,则需要首先下载MySQL数据驱动:MySQL :: Download MySQL Connector/ODBC (Archived Versions) 2.运行“odbcad32.exe”,如下图添加对应的数据库配置&#xf…

SpringMVC:向三大域对象存数据

1. 简介 Servlet中的三个域对象 请求域:request会话域:session应用域:application 主要是通过:setAttribute getAttribute方法来完成在域中数据的传递和共享。 点击跳转Servlet详细概念 // 向域中存储数据 void setAttribute(St…

智能sql LLM

DB-GPT:彻底改变数据库与私有LLM技术的交互 智能SQL生成:后端技术与LLM的完美结合 智能SQL生成:后端技术与LLM的完美结合_llm sql-CSDN博客 GitHub - eosphoros-ai/DB-GPT: AI Native Data App Development framework with AWEL(Agentic Wor…

【C/C++】C/C++车辆交通违章管理系统(源码+数据文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

golang字符串实用函数库go-str-utils 之字符串命名转换 大小驼峰, snake, kebab命名转换

在go语言的开发中,字符串的处理是最为频繁的, 今天给大家介绍的这个 go-str-utils 专门的字符串处理实用函数库中的 字符串命名转换 大小驼峰, snake, kebab命名转换。 各种命名转换规则和示例 CamelStr 大驼峰 单词全部首字母大写 如: User…

[补题记录]LeetCode 167.两数之和 II - 输入有序数组

StarryCoding 是面向计算机专业学生的综合学习与刷题平台&#xff0c;欢迎同学们的加入&#xff01; 传送门&#xff1a;两数之和 II - 输入有序数组 Thought/思路 答案只需要返回两个下标&#xff0c;表示和为 target 的两个数。 我们可以用一个 map<int, vector> 维…

面试题:useEffect的Clean Up 什么时候触发?

​ useEffect作为做常用的Hook&#xff0c;以下三个知识点你有必要了解下~ 防止写出奇怪的代码祸害队友&#xff0c;而我不幸就是这个受害者&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; useEffect的依赖项为空 useEffect的dependencyList作为一个可选参数…

Pytest框架中用例用例执行常用参数介绍

pytest 支持通过命令行参数来定制测试运行的方式。以下是一些常用的 pytest 执行参数介绍。 学习目录 -q 或 --quiet: 安静模式&#xff0c;只显示进度和摘要 -s : 选项允许在测试的输出中捕获 stdout 和 stderr。 -v : 选项会使 pytest 的输出更加详细。 -k &#xff1a;…

Git 恢复已删除的branch

六一节晚上改了点code, 做完之后commit, 然后误删了这个branch, 并且新建了branch. 那么怎样恢复已删除的branch呢&#xff1f; 网上查询一番&#xff0c;找到了答案&#xff1a; 1. git reflog 找到被删的branch中最后一笔commit, 记录它的SHA1。 怎么看SHA1是被删除的bra…

鸿蒙应用Stage模型【应用/组件级配置】

应用/组件级配置 在开发应用时&#xff0c;需要配置应用的一些标签&#xff0c;例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。 应用包名配置 应用需要在工程的AppScope目录下的[app.json5配置文件]中配置bundleName标签&#xff0c;…

Python PyInstaller打包方法介绍

为了将开发好的Python工具交付给其他人使用&#xff0c;除了在目标电脑部署Python编译环境以外&#xff0c;我们还可以将它打包成可执行文件&#xff0c;这样目标电脑不需要安装Python环境就可以运行。将Python程序打包成可执行文件的方法有多种&#xff0c;比如Nuitka、PyInst…

【TB作品】msp430f5529单片机,读取DHT11温湿度,读取adc,oled显示

功能 msp430f5529单片机&#xff0c;读取DHT11温湿度&#xff0c;读取adc&#xff0c;oled显示 硬件 //OLED引脚分配 绿色板子 //DO(SCLK)------P4.3 //D1(DATA)------P4.0 //RES-----------P3.7 //DC------------P8.2 //CS------------P8.1 //mq135 P6.5 //DHT11 P4.1 部…

如何使用Python获取图片中的文字信息

如下有三中方法&#xff1a; 方法1. 使用Tesseract OCR&#xff08;pytesseract&#xff09; 安装依赖 首先&#xff0c;确保你已经安装了Tesseract OCR引擎&#xff08;例如&#xff0c;通过你的操作系统的包管理器&#xff09;。然后&#xff0c;你可以通过pip安装pytesse…

微博增强-tampermonkey脚本实现网页管理悄悄关注

不是很明白微博为什么不出个x的列表功能&#xff0c;毕竟现在信息洪流&#xff0c;有些东西只是要看要了解&#xff0c;但不希望天天在首页轰炸眼睛&#xff0c;扰乱心智。 这个tampermonkey脚本适配了pc web和手机pwa版本&#xff08;weibo.com/m.weibo.cn&#xff09;,解决了…

golang map部分原理源码个人走读-附个人理解过程图解

近期再写map的demo时出现了下面一段报错&#xff0c;于是带着疑惑去看了一下源码 目的&#xff1a;主要想知道为啥map不让并发读写 fatal error: concurrent map read and map write 一.map的数据结构 先有个印象&#xff0c;后续会详细介绍 // A header for a Go map. ty…

NDIS Filter开发-OID 请求

NDIS 定义对象标识符 (OID) 值来标识适配器参数&#xff0c;其中包括操作参数&#xff0c;例如设备特征、可配置的设置和统计信息。 Filter驱动程序可以查询或设置基础驱动程序的操作参数&#xff0c;或过滤/覆盖顶层驱动程序的 OID 请求。 NDIS 还为 NDIS 6.1 及更高版本的Fi…

Informer

I n f o r m e r Informer Informer 摘要&#xff1a; 长序列时间序列的预测 i n f o r m e r informer informer优点&#xff1a; P r o b s p a r e Probspare Probspare自关注机制&#xff0c;在时间复杂度和内存使用方面达到 O ( N l o g N ) O(NlogN) O(NlogN),在序列依…