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实现的检测web服务器健康状况的小程序
Sep 17 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
PyQt5每天必学之弹出消息框
Apr 19 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
Python判断telnet通不通的实例
Jan 26 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
Python数据持久化存储实现方法分析
Dec 21 Python
浅谈Python中的字符串
Jun 10 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
如何通过安装HomeBrew来安装Python3
Dec 23 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
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Python的Django框架中if标签的相关使用
2015/07/15 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python输出决策树图形的例子
2019/08/09 Python
python super用法及原理详解
2020/01/20 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
手工社团活动方案
2014/02/17 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
表彰大会策划方案
2014/05/13 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
Python打包为exe详细教程
2021/05/18 Python