首页 > 编程语言 >python3多线程-线程池和优先队列

python3多线程-线程池和优先队列

时间:2023-04-15 09:56:22浏览次数:47  
标签:count thread 队列 list 任务 线程 多线程 python3

1、介绍
有两种线程池方案。
各线程持续存在,从任务池获取任务进行执行
按照需求创建线程,每个线程只执行一个任务,结束完毕则该线程结束

2、准备
(1)任务池task_list
任务池是用于准备各任务单元的环境,比如http爆破时的请求参数,读写文件时的路径。
任务池的准备可能会占用一定时间,边准备边使用为好
任务池可能会占用较大内存空间,因此最好的是边使用边销毁

(2)线程池thread_list
线程池是用于存放线程对象。但并不一定是list形式,在不涉及调用创建的线程时,也可以是一个变量记录当前的线程数的变量,比如thread_count

(3)最大线程数thread_max_count
表示在同时间,允许的最大线程数

3、线程多任务方案
(1)根据thread_max_count,创建多个线程。每个线程任务,会监控任务池task_list的情况,当存在需要处理的任务时,进行读取和处理
(2)如果任务池task_list占用内存太大,或者完全初始化任务池需要太长时间,或者由于需要关联背景无法直接初始化任务池。则需要一个task_thread线程来生成任务池需要的任务,同时线程池进行消耗处理任务池

4、线程单任务方案
(1)主线程创建任务,如果当前线程数thread_count小于最大线程数thread_max_count,则创建线程来处理该任务。否则,休眠等待已有的线程结束再创建

5、优先队列
Python 的 Queue 模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue。

标签:count,thread,队列,list,任务,线程,多线程,python3
From: https://www.cnblogs.com/wd404/p/17320559.html

相关文章

  • python3多线程-线程同步
    1、介绍多线程同时访问和操作同一资源,可能会造成异常。解决办法是对资源进行限制,同一时间只允许一个线程进行访问和操作。这里的资源,一般是指方法、函数或者代码块。即由多行代码组成,在逻辑上属于不可切分的操作。2、线程同步使用Thread对象的Lock和Rlock可以实现简单......
  • python3模块和相关
    1、模块为了方便管理类和函数,将其保存到不同的文件中,文件又可以存放在不同的目录下。这里的文件和目录,即python模块。(1)通过关键字import进行导入(2)一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。(3)搜索路径被存储在sys模块......
  • python3类的继承与相关
    参考:https://blog.csdn.net/zhouzhiwengang/article/details/1196776371、继承python支持类继承,在子类类名后的圆括号()中声明继承的父类,如果没有继承,则可以不加()。支持多继承,直接写入多个类名,用,分隔。如果没有指定基类,python的类会默认继承object类。object是所有python类......
  • java -- 线程(二)
    死锁死锁是指两个或两个以上的线程在执行过程中,由于竞争同步锁而产生的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的线程称为死锁。死锁的案例:同步代码块的嵌套创建锁对象:publicclassLock{public......
  • python3类
    1、类python中使用关键字class声明类。在类中,可以有变量和方法。2、对象变量和类变量在类中、方法外声明的变量为类变量,基于该类创建的对象共享类变量。在类中、方法中声明的变量为对象变量,属于各对象私有。对象变量一般建议在初始化方法__init__中统一声明,当然,在其他方法中......
  • [计科]多进程和多线程的程序在使用上有何区别?
    区别多进程和多线程的程序在使用方式和效果上有很大的区别。多进程程序是在不同的进程之间进行协作的,每个进程都有自己独立的内存空间和系统资源。多个进程之间通过进程间通信(IPC)进行数据和信息的交换。多进程的优点在于可靠性和鲁棒性较高,一个进程出现问题不会影响到其它进程......
  • python3控制结构
    1、介绍控制结构一般为:顺序结构,默认的从前到后执行顺序执行即是条件结构,if结构,python没有switch结构循环结构,while和for结构,以及迭代器,python不存在dowhile结构2、if结构if条件判断:passelif条件判断:passelse:pass3、while结构i=3whilei>0:......
  • python3 静态方法,类方法和普通方法
    classMyClass:@staticmethoddefstatic_method():print('静态方法')@classmethoddefclass_method(cls):print('类方法')#普通方法defnormal_method(self):print('普通方法')MyClass.stati......
  • python3 多继承时,父类有相同一个函数的选择
    classPeople:name=''age=0__weight=0def__init__(self,name,age,weight):print("People初始化")self.age=ageself.name=nameself.__weight=weightprint("People......
  • python3 各种方式连接mysql数据库
    print("python连接mysql数据库")#importmysql.connector"""#1使用mysql-connector连接mysqlimportmysql.connectormydb=mysql.connector.connect(host="localhost",user="clever",passwd="1881301"......