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批量修改文件名的实现代码
Sep 01 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
Python运算符重载详解及实例代码
Mar 07 Python
python3库numpy数组属性的查看方法
Apr 17 Python
python查看列的唯一值方法
Jul 17 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
Python读写csv文件流程及异常解决
Oct 20 Python
Python使用windows设置定时执行脚本
Nov 12 Python
python 元组和列表的区别
Dec 30 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
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
Vue2路由动画效果的实现代码
2017/07/10 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
盘点提高 Python 代码效率的方法
2014/07/03 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
Python中的类与类型示例详解
2019/07/10 Python
python机器学习库xgboost的使用
2020/01/20 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
预备党员思想汇报范文
2014/01/11 职场文书
采购部部长岗位职责
2014/02/06 职场文书
六五普法规划实施方案
2014/03/21 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书