python3 线程池监控线程是否停止工作_Python线程池——个人总结,如果你不喜欢就不要喷,勿...

有bug,请在评论区留下你得真言,谢谢

concurrent.futures 包含线程池和进程池,目前只记录线程池 ThreadPoolExecutor的使用

小二,上代码~

from concurrent.futures import ThreadPoolExecutor

import threading

import time

def test(i):

print('threading name is %s, %s, %s' % (threading.current_thread().name, i, i+1))

time.sleep(1)

return 'finished'

if __name__ == "__main__":

pool = ThreadPoolExecutor(max_workers=4, thread_name_prefix='test_')

list_t = []

for i in range(10):

future = pool.submit(test, i)

list_t.append(future)

pool.shutdown(wait=True)

1.创建线程池ThreadPoolExecutor,max_workers:线程池的最大容量;thread_name_prefix:线程名称前缀,打印线程名称可查看

2.创建10个任务,给线程池执行,最大容量设置为4,所以只会同时执行4个任务

submit,执行任务,第一个参数test指定执行任务的函数,第二个参数指定给函数的参数

执行任务的函数,return,用于查看任务的执行结果

3.经过测试,当首次创建线程池时,是没有线程生成的,而是每提交一个任务给线程池,则会生成一个线程

生成的线程数=min(线程池容量(4),期望的任务数range(10))

线程池的线程执行完任务,不会被杀死,而是空闲状态,等待下个任务进来

4.pool.shutdown(),关闭线程池,结束线程,如果是想等所有任务完成,再关闭线程池,则设置pool.shutdown(wait=True)

from concurrent.futures import ThreadPoolExecutor

import threading

import time

def test(i):

print('threading name is %s, %s, %s' % (threading.current_thread().name, i, i+1))

time.sleep(1)

return 'finished'

if __name__ == "__main__":

pool = ThreadPoolExecutor(max_workers=4, thread_name_prefix='test_')

list_t = []

for i in range(10):

future = pool.submit(test, i)

list_t.append(future)

print(future.done())

pool.shutdown(wait=True)

5.查看任务是否完成,future.done(),返回值是bool

from concurrent.futures import ThreadPoolExecutor

import threading

import time

def test(i):

print('threading name is %s, %s, %s' % (threading.current_thread().name, i, i+1))

time.sleep(1)

return 'finished'

def done_callback(future):

print(future.result())

print('it is stop %s' % threading.current_thread().name)

if __name__ == "__main__":

pool = ThreadPoolExecutor(max_workers=4, thread_name_prefix='test_')

list_t = []

for i in range(10):

future = pool.submit(test, i)

list_t.append(future)

# time.sleep(1.5)

future.add_done_callback(done_callback)

for t in list_t:

print(t.result())

print(threading.active_count())

pool.shutdown(wait=True)

print(threading.active_count())

异步回调,输出任务执行结果,future.add_done_callback(done_callback),done_callback()为回调函数,即任务执行完或者

退出就调用这个函数

注意:回调函数必须存在一个参数,代表调用函数的任务对象future,可以通过这个对象查看执行结果,future.result()

大家可能注意到,我这里注释了一行代码,sleep(),有这样两种情况:

1) 存在这行代码,执行回调函数,打印线程,是主线程

2) 不存在这行代码,执行回调函数,打印线程,是当前执行任务的线程

3) 总结:有个猜测,回调方法,是线程执行完任务就调用这个方法,如果sleep()阻塞,则这个future脱离了这个线程,只是一个对象,对于这个调用,变成了主线程执行,

大家有知道的评论区留下,谢谢

同步输入任务执行结果,通过列表存储这些任务,调用result()获取执行结果

threading.active_count():查询当前线程数:生成的线程数=min(线程池容量(4),期望的任务数range(10)) + 1(1代表主线程),关闭线程池后,数量为1,只剩下主线程,代表关闭线程池,则实现线程被杀死

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

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

相关文章

bootstarp js设置列隐藏_bootstrap table getHiddenColumns获取隐藏的列的方法

bootstrap table getHiddenColumns获取隐藏的列的方法bootstrap table getHiddenColumns获取表格隐藏的列,即获取哪些列当前不可见的列,因为有的列可以通过工具栏或者方法可以设置列隐藏,如何隐藏某个列请查看左侧菜单。getHiddenColumns方法…

iphone11边框喇手问题_别贪图小便宜!iPhone11真机上手,3个缺点不得不说

推荐语:苹果发布会开了,新机也出了,但在体验了一番iPhone 11后,这位作者似乎并不满意。下文转载自作者:数码扒一扒如今,iPhone 11系列机型已经正式发布,值得一提的便是,iPhone 11这款…

提高抗打击能力_孩子抗挫能力差,巧用4个小窍门,引导孩子将“危”化为“机”...

孩子在成长的过程中失败与挫折是必不可缺少的,家长要明白,孩子就是在挫折与失败中,跌跌撞撞成长的。博为曾说过:一次的失败,一次跌倒,只能证明我们成功的决心还不够坚定。所以当孩子不够具有成熟的抗打击能…

14怎么敷铜不了_诗懿教你如何避开这十大敷面膜误区,护肤效果可翻倍!

面膜可以说是护肤的必备品了,而且很多人家里都囤着一堆面膜。敷面膜是对皮肤有改善作用的,但是用的不对,反而会造成敏感,滋生闭口痘痘。所以今天就先来了解一下敷面膜的误区吧,解锁敷面膜的正确姿势~那是因为&#xff…

按照顺序执行_问一个多线程的问题:如何才能保证线程有序执行?

面试的时候你是否经常被问到这样的问题:你一般通过什么方式去控制线程的执行顺序?碰到这样的问题,我的内心其实是很抵触的!开什么玩笑?我怎么会控制它呢?我为什么要控制它?其实不用慌&#xff0…

经典sql语句50题_SQL面试经典50题:带你从建表开始

大家好,相信很多学习数据分析的小伙伴在面试前都经历过刷题,本系列小编将带大家一起来刷一刷SQL面试必会的经典50题。当然本系列文章不单单是刷题,小编会带着大家梳理一下解题时用到的知识点,所以基础比较差的小伙伴也完全不必担心…

mongodb创建local库用户_mongodb用户与角色使用

此文档以mongodb 4.0版本进行对用户权限和角色讲解,更详细内容可参考mongodb官方文档.官方文档:https://docs.mongodb.com/manual/core/security-users/一.mongodb内部角色1.数据库用户角色read --读取数据库对像的权限readWrite --读取和修改数据库对像权限2.数据库管理…

exif linux php扩展_LNMP环境为PHP添加exif扩展

在使用时 php报出如下错误: Call to undefined function gemvary\exif_imagetype()好吧,exif扩展没安装...通过 打印phpinfo() 查看得知 mbstring 扩展是有的,exif扩展没有如果mbstring也没有,也可以参考以下exif扩展的安装过程;安装过程基本…

宇视硬盘录像机onvif_视频监控系统中强大的录像机,兼容不同品牌,看看有哪些监控厂家...

选录像机,除路数、盘位和最大接入像素这些硬规格,大家还关注兼容性,例如好不好用、配置方不方便、使用流不流畅、录像稳不稳定等。偶尔也会有朋友问“TP的录像机可以搭配xx厂商的摄像机使用吗?”,答案当然是&#xff1…

python设置函数_在Python中设置函数签名

假设我有一个泛型函数f,我想以编程方式创建一个行为与f相同但具有自定义签名的函数f2。更多细节给定列表l和字典d,我希望能够:将f2的非关键字参数设置为l中的字符串将f2的关键字参数设置为d中的键,将默认值设置为d中的值假设我们有…

mysql新建数据表_Mysql创建数据库与表,并添加表的数据

首先,在成功安装Mysql的基础上,进入到cmd窗口,登录我们的mysql管理系统。登录方式:mysql -u用户名 -p密码如果出现Welcome to...等一大堆英文指示,则说明成功进入了mysql系统。因为我们不知道系统中有哪些库&#xff0…

mysql数据库管理维护_(转)Mysql数据库管理 表的维护

原文:http://t.dbdao.com/archives/mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86-%E8%A1%A8%E7%9A%84%E7%BB%B4%E6%8A%A4.html一、目标完成本课程后,你应该能够:认识不同类型的表维护操作执行维护表的SQL语句使用客户端和实用程序维护…

mysql如何使用事件_MySQL事件的使用详解

在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQL语句。这个时候就会用到mysql事件,使用这个功能必须保证是mysql的版本是5.1以上。1.首先要查看事件是否开启了,SHOW VARIABLES LIKE event_scheduler;SELECT event_scheduler…

mysql 提交乱码问题_mysql数据库乱码问题

变量 a 的字符编码是由参数 CHARACTER_SET_CLIENT 决定的,假设此时编码为 A,也就是变量 a 的编码。2. 写入语句在发送到 MySQL 服务端之前的编码由 CHARACTER_SET_CONNECTION 决定,假设此时编码为 B。3. 经过 MySQL 一系列词法,语…

mysql5.5编译安装脚本_mysql5.5 免编译安装及脚本启动报错深入

Mysql安装环境简介:最近在做MHA。已经安装完毕heartbeat和drbd,现在准备安装Mysql。Mysql安装目录:/opt/mysqlMysql数据目录:/data/mysql备注:/data目录实际是drbd需要同步到备节点的磁盘分区[rootmysql1 src]# df -hF…

mysql 主键索引如何创建_SQL创建索引、主键

-- MySQL中四种方式给字段添加索引1)# 添加主键# ALTER TABLE tbl_name ADD PRIMARY KEY (col_list);# -- // 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。#添加唯一索引 -- UNIQUE 后面不用跟INDEX# ALTER TABLE tbl_name ADD UNIQU…

mysql查询20-30的数据_20. mysql查询表的数据大小

在需要备份数据库里面的数据时,我们需要知道数据库占用了多少磁盘大小,可以通过一些sql语句查询到整个数据库的容量,也可以单独查看表所占容量。1、要查询表所占的容量,就是把表的数据和索引加起来就可以了select sum(DATA_LENGTH…

requests由于系统缓冲区空间不足_系统C盘满了空间不足的扩容?

今天带来的是无需重新分区,无需删除逻辑分区的C盘容量扩大方法不重新或删除分区这就意味着无需重新安装软件、游戏等程序,也不用备份重要资料等操作,不影响电脑其它盘。统C盘满了是十分常见的问题,由于起初对C盘分区分的太小了&am…

mysql登陆三小时平均值图片_Mysql每小时平均值,间隔从半小时开始

我有一个mysql数据库,其中包含5分钟箱中的数据 . 我想从半小时开始创建每小时平均数据 . 通过使用mysql内置组:select date,AVG(AE) from mytable group by date(date),HOUR(date);会计算从01:00到02:00的平均值 . 相反,我希望从00:30到01:30…

mysql ip to int_ip网段转换程序(把ip地址转换成相对就的整数)

mysql教程_connect(localhost,root,root);mysql_select_db(dfd);$array file("ip.txt");foreach( $array as $k ){list ($ip,$s) explode(/,$k);$ipe str_replace(.0,.255,$ip);$ipint iptoint($ip);$ipinte iptoint($ipe);//echo iptoint($ip) .-.iptoint($ip…