新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 程序开发 > 语言 > Python

python中的线程与线程池

时间:2019-05-14 09:45:22  来源:  作者:

进程和线程

什么是进程?

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

什么是线程?

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

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

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

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

特点

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

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

线程的实现

线程模块

Python通过两个标准库_thread和threading, 提供对线程的支持 , threading对_thread进行了封装。

threading模块中提供了Thread , Lock , RLock , Condition等组件。

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

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

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

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

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

是产生其他子线程的线程

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

Thread类

常用参数说明

python中的线程与线程池

 

常用实例方法

python中的线程与线程池

 

创建线程

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

python中的线程与线程池

 

实例Thread类

python中的线程与线程池

 

继承Thread类

python中的线程与线程池

 

常用方法

join()

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

python中的线程与线程池

 

setDemon()

使用给线程设置守护模式: 子线程跟随主线程的结束而结束, 不管这个子线程任务是否完成. 而非守护模式的子线程只有在执行完成后, 主线程才会执行完成

setDaemon() 与 join() 基本上是相对的 , join会等子线程执行完毕 ; 而setDaemon则不会等

python中的线程与线程池

 

线程间的通信

互斥锁

在同一个进程的多线程中 , 其中的变量对于所有线程来说都是共享的 , 因此 , 如果多个线程之间同时修改一个变量 , 那就乱套了 , 共享的数据就会有很大的风险 , 所以我们需要互斥锁 , 来锁住数据 , 防止篡改。

来看一个错误的示范:

python中的线程与线程池

 

下面我们改一下上面的代码 , 两个方法加上互斥锁:

python中的线程与线程池

 

在容易出现抢夺资源的地方进行上锁 , 实现同一时间内 , 只有一个线程可以对对象进行操作

队列Queue

常用方法

关键字解释

python中的线程与线程池

 

(1): 阻塞: 程序停在阻塞的位置 , 无法继续执行

导入和实例化

python中的线程与线程池

 

put() 和 get()

python中的线程与线程池

 

empty()

python中的线程与线程池

 

qsize()

python中的线程与线程池

 

full()

python中的线程与线程池

 

join()

python中的线程与线程池

 

线程池

池的概念

线程池中实现准备好了一些可以重复使用的线程 , 等待接受任务并执行

主线程提交任务给 线程池 , 线程池中的每个线程会一次一个的接收任务并执行 , 直到主线程执行结束

主线程: 相当于生产者,只管向线程池提交任务。

并不关心线程池是如何执行任务的。

因此,并不关心是哪一个线程执行的这个任务。

线程池: 相当于消费者,负责接收任务,

并将任务分配到一个空闲的线程中去执行。

自定义线程池

python中的线程与线程池

 

简单使用

python中的线程与线程池

 

python内置线程池

原理

1.创建线程池

2.将任务扔进去

3.关闭线程池

4.等待线程任务执行完毕

python中的线程与线程池

 

使用方法

python中的线程与线程池

 

其他操作

操作一: close - 关闭提交通道,不允许再提交任务

操作二: terminate - 中止进程池,中止所有任务
 



Tags:python   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
《九章算术》,一本成书于东汉初期、汇总了中国先秦至汉代数学成就的著作。Python版本的《九章算术》,以编程的方式诠释《九章》,通过《九章》学习编程。简练精致的文言、清晰明...【详细内容】
2020-03-17   python  点击:(6)  评论:(0)  加入收藏
一、函数、输入、评估、输出函数 1、函数函数定义:根据输入的参数产生不同输出结果的功能过程。使用方式:<函数名>(<参数>)函数效果:类似数学中的函数,y=f(x) 2、三个简单函数 (1...【详细内容】
2020-03-16   python  点击:(6)  评论:(0)  加入收藏
pytest介绍pytest是一款强大的python测试工具,可以胜任各种级别的软件测试工作,可以自动查找测试用并执行,并且有丰富的基础库,可以大幅度提高用户编写测试用例的效率,具备可扩...【详细内容】
2020-03-16   python  点击:(8)  评论:(0)  加入收藏
今天给大家介绍个有意思的工具,不知道你有没有听说过中间人攻击(Man-in-the-middle attack)简称 MITM,是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制...【详细内容】
2020-03-15   python  点击:(3)  评论:(0)  加入收藏
开发安全、高质量代码的 5 款顶级 Python 工具原创 InfoQ 2020-03-12 16:12:50 为提高代码的质量、安全性和可维护性,软件工程师每天会用到无数工具。我会列出一些自己最喜...【详细内容】
2020-03-15   python  点击:(8)  评论:(0)  加入收藏
本文介绍如何利用python来对MySQL数据库进行操作,本文将主要从以下几个方面展开介绍:1.数据库介绍2.MySQL数据库安装和设置3.Python操作MySQL在Python3.X上安装MySQL驱动创建...【详细内容】
2020-03-15   python  点击:(11)  评论:(0)  加入收藏
程序员编程分享 2020-02-24 15:06:26 当我开始学习Python的时候,有些事我希望我一早就知道。我花费了很多时间才学会这些东西。我想要把这些重点都编纂到一篇文章当中。这篇...【详细内容】
2020-03-15   python  点击:(8)  评论:(0)  加入收藏
Web 项目设计内容聚合器(Content Aggregator)1. 技术细节该项目设计的主要目标是聚合内容。首先,我们需要知道内容聚合器从哪些站点获取内容。然后,使用请求库来发送 HTTP 请...【详细内容】
2020-03-15   python  点击:(12)  评论:(0)  加入收藏
不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行。这里整理了70个Python实战项目列表,都有完整且详细...【详细内容】
2020-03-15   python  点击:(36)  评论:(0)  加入收藏
0基础小白怎么学Python?今天给大家分享一些学习Python的基本概念图,入门书籍、视频教程以及学习路上最有效的方法。Python基本概念最全图1.Python 解释器: 2.Python数据结构...【详细内容】
2020-03-15   python  点击:(7)  评论:(0)  加入收藏
鉴于大多数书籍在编写上都结构混乱,无法体现出知识的系统性、逻辑性和层次性。特整理出学Python最基础的知识学习框架,希望帮助大家快速入门。要快速学会Python,谨记&lsquo;3个...【详细内容】
2020-03-15   python  点击:(8)  评论:(0)  加入收藏
我是个只会用Excel的数据分析工作者。有一天,我和朋友约好晚上一起吃饭,离下班还有5分钟,老板突然Q我:老板:你今天加个班我:好呀好呀老板:我有几个Excel,需要你把它们合成一张表我:...【详细内容】
2020-03-14   python  点击:(8)  评论:(0)  加入收藏
网络相关 通用 urllib &ndash; 网络库(标准库) requests &ndash; 网络库 grab &ndash; 网络库(基于pycurl) pycurl &ndash; 网络库 (与 libcurl 绑定) urllib3 &ndash; 具有...【详细内容】
2020-03-14   python  点击:(14)  评论:(0)  加入收藏
auto-py-to-exe是一个简单小工具,用一个简单的小界面图形化的方式将.py转换成exe,该界面使用Python中的Eel和PyInstaller构建,这是一个开源小项目,你可以在Github上查看它,Github...【详细内容】
2020-03-13   python  点击:(8)  评论:(0)  加入收藏
pyenv 多版本管理工具1.linux安装pyenv方式git 安装1、安装git# yum install git -y2、安装Python编译依赖# yum -y install gcc make patch gdbm-devel openssl-devel s...【详细内容】
2020-03-13   python  点击:(4)  评论:(0)  加入收藏
/1 前言/细心的小伙伴可能知道,小编之前发布过一篇使用Python发现酒店隐藏的针孔摄像头,没有来得及上车的小伙伴也没关系,可以戳这篇文章了解一下:使用Pyhton带你分析酒店里的针...【详细内容】
2020-03-09   python  点击:(6)  评论:(0)  加入收藏
用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机。本文目标 远程开机原理 Python 远程开机代码实现 Python 关机说明P...【详细内容】
2020-03-08   python  点击:(7)  评论:(0)  加入收藏
首先,打开电脑终端并执行以下命令安装Homebrew:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"更多关于Homebrew,...【详细内容】
2020-03-08   python  点击:(8)  评论:(0)  加入收藏
作者:HelloGitHub-Prodesire一、前言在本系列前面所有文章中,我们分别介绍了 argparse、docopt 和 click 的主要功能和用法。它们各具特色,都能出色地完成命令行任务。argpars...【详细内容】
2020-03-08   python  点击:(6)  评论:(0)  加入收藏
现如今面向对象编程的使用非常广泛,本文我们就来探讨一下Python中的面向对象编程。作者 | Radek Fabisiak译者 | 弯月,责编 | 郭芮出品 | CSDN(ID:CSDNnews)以下为译文:Python支持...【详细内容】
2020-03-05   python  点击:(12)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条