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删除java文件头上版权信息的方法
Jul 31 Python
Python表示矩阵的方法分析
May 26 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
详解django的serializer序列化model几种方法
Oct 16 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
使用TFRecord存取多个数据案例
Feb 17 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
对Keras自带Loss Function的深入研究
May 25 Python
Python List remove()实例用法详解
Aug 02 Python
Python学习之时间包使用教程详解
Mar 21 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输出xml格式字符串(用的这个)
2012/07/12 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
Python3的socket使用方法详解
2020/02/18 Python
详解Python中import机制
2020/09/11 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
如何用python写个模板引擎
2021/01/14 Python
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
C#面试题
2016/05/06 面试题
超市七夕促销活动方案
2014/08/28 职场文书
转让协议书范本
2014/09/13 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
党员个人承诺书
2015/04/27 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js