python中线程与线程池的作用分别是什么

  介绍

本篇文章给大家分享的是有关python中线程与线程池的作用分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>线程

进程和线程

什么是进程?

进程就是正在运行的程序,一个任务就是一个进程,进程的主要工作是管理资源,而不是实现功能

什么是线程?

线程的主要工作是去实现功能,比如执行计算。

线程和进程的关系就像员工与老板的关系,

老板(进程)提供资源和工作空间,

员工(线程)负责去完成相应的任务

<强>特点

一个进程至少由一个线程,这一个必须存在的线程被称为主线程,同时一个进程也可以有多个线程,即多线程

当我们我们遇到一些需要重复执行的代码时,就可以使用多线程分担一些任务,进而加快运行速度

线程的实现

<强>线程模块

Python通过两个标准库_thread和线程、提供对线程的支持,线程对_thread进行了封装。
线程模块中提供了线程、锁,RLock,条件等组件。

因此在实际的使用中我们一般都是使用线程来实现多线程

线程包括子线程和主线程:

主线程:当一个程序启动时,就有一个线程开始运行,该线程通常叫做程序的主线程

子线程:因为程序是开始时就执行的,如果你需要再创建线程,那么创建的线程就是这个主线程的子线程

主线程的重要性体现在两方面:

<李>

是产生其他子线程的线程

<李>

通常它必须最后完成执行,比如执行各种关闭操作

<强>线程类

常用参数说明

参数说明目标表示调用的对象,即子线程要执行的任务,可以是某个内置方法,或是你自己写的函数名子线程的名称args传入目标函数中的位置参数,是一个元组,参数后必须加逗号

<强>常用实例方法

方法作用Thread.run(自我)线程启动时运行的方法,由该方法调参用目标数所指定的函数Thread.start(自我)启动进程,开始方法就是区帮你调用运行方法Thread.terminate(自我)强制终止线程线程。加入(自我,超时=None)阻塞调用,主线程进行等待线程。setDaemon(自我,恶魔的)将子线程设置为守护线程,随主线程结束而结束线。getName(自我,名称)获取线程名线程。setName(自我,名称)设置线程名

<强>创建线程

在python中创建线程有两种方式,实例线程类和继承重写线程类

<强>实例线程类

import 线程   import 时间      def 运行(名称,年代):,#,线程要执行的任务   ,time . sleep (s) #,停两秒   ,打印(& # 39;小姐:am  % & # 39;, %,名称)      #,实例化线程类,,并传入函数及其参数,,==t1  threading.Thread(目标运行,,name=& # 39;一个# 39;,,arg游戏=(& # 39;一个# 39;,,5))==t2  threading.Thread(目标运行,,name=& # 39;两个# 39;,,arg游戏=(& # 39;两个# 39;,,2))      #,开始执行,,这两个线程会同步执行   t1.start ()   t2.start ()   print (t1.getName()) #,获取线程名   print (t2.getName ())      #,结果:   一个   两个   小姐:am 两个#,运行2 s后   小姐:am 一个#,运行5 s后

<强>继承线程类

class  MyThread (threading.Thread):, #,继承中线程的线程类   ,#线程所需的参数   ,def  __init__(自我,,名字,,秒):   ,super () . __init__ ()   self.name =,名称   self.second ,=,第二个      ,#重写运行方法,表示线程所执行的任务,必须有   ,def 运行(自我):   ,time . sleep (self.second)   ,打印(& # 39;小姐:am  % & # 39;, %, self.name)   #,创建线程实例   时间=t1  MyThread(& # 39;一个# 39;,,5)   时间=t2  MyThread(& # 39;两个# 39;,,2)   #,启动线程,实际上是调用了类中运行的方法   t1.start ()   t2.start ()   t1.join ()   print (t1.getName ())   print (t2.getName ())      #,结果:   小姐:am 两个#,运行后2 s   小姐:am 一个#,运行后5 s   一个   以前两个

<>强常用方法

<>强加入()

阻塞调用程序,直到调用加入()方法的线程执行结束,才会继续往下执行

#,开始执行,,这两个线程会同步执行   t1.start ()   t2.start ()   t1.join() #,等待t1线程执行完毕,再继续执行剩余的代码   print (t1.getName ())   print (t2.getName ())      #,结果:   小姐:am  2   小姐:am 一个   一个   以前两个

python中线程与线程池的作用分别是什么