python3多线程知识点总结


Posted in Python onSeptember 26, 2019

多线程类似于同时执行多个不同程序,多线程运行有如下优点:

使用线程可以把占据长时间的程序中的任务放到后台去处理。

用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。

程序的运行速度可能加快。

在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。

指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。

线程可以被抢占(中断)。

在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) -- 这就是线程的退让。

线程可以分为:

  • 内核线程:由操作系统内核创建和撤销。
  • 用户线程:不需要内核支持而在用户程序中实现的线程。

Python3 线程中常用的两个模块为:

_thread

threading(推荐使用)

thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 "_thread"。

开始学习Python线程

Python中使用线程有两种方式:函数或者用类来包装线程对象。

函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程。语法如下:

_thread.start_new_thread ( function, args[, kwargs] )

参数说明:

function - 线程函数。

args - 传递给线程函数的参数,他必须是个tuple类型。

kwargs - 可选参数。

实例:

#!/usr/bin/python3

 

import _thread

import time

 

# 为线程定义一个函数

def print_time( threadName, delay):

  count = 0

  while count < 5:

   time.sleep(delay)

   count += 1

   print ("%s: %s" % ( threadName, time.ctime(time.time()) ))

 

# 创建两个线程

try:

  _thread.start_new_thread( print_time, ("Thread-1", 2, ) )

  _thread.start_new_thread( print_time, ("Thread-2", 4, ) )

except:

  print ("Error: 无法启动线程")

 

while 1:

  pass

以上就是python3多线程的详细内容,感谢大家对三水点靠木的支持。

Python 相关文章推荐
Python  连接字符串(join %)
Sep 06 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
Python中List.index()方法的使用教程
May 20 Python
Python实现控制台输入密码的方法
May 29 Python
Python3学习urllib的使用方法示例
Nov 29 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
简单了解python单例模式的几种写法
Jul 01 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
python实现最短路径的实例方法
Jul 19 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 #Python
Python容器使用的5个技巧和2个误区总结
Sep 26 #Python
通过python3实现投票功能代码实例
Sep 26 #Python
Python编写打字训练小程序
Sep 26 #Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 #Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 #Python
python 模拟创建seafile 目录操作示例
Sep 26 #Python
You might like
PHP VS ASP
2006/10/09 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
JavaScript this 深入理解
2009/07/30 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
python简易远程控制单线程版
2018/06/20 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
董事长秘书岗位职责
2013/11/29 职场文书
个人委托书格式
2014/04/04 职场文书
解放思想演讲稿
2014/09/11 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
红色电影观后感
2015/06/18 职场文书
高三数学教学反思
2016/02/18 职场文书