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 django集成cas验证系统
Jul 14 Python
在Python中编写数据库模块的教程
Apr 29 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
Django后台获取前端post上传的文件方法
May 28 Python
python实现猜单词小游戏
May 22 Python
Python图像处理之图片文字识别功能(OCR)
Jul 30 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
浅谈Python类的单继承相关知识
May 12 Python
Python实现位图分割的效果
Nov 20 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二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
php微信开发之关注事件
2018/06/14 PHP
php实现数字补零的方法总结
2018/09/12 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
解析jquery获取父窗口的元素
2013/06/26 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
python根据经纬度计算距离示例
2014/02/16 Python
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
django修改models重建数据库的操作
2020/03/31 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
不用游标的SQL语句有哪些
2012/09/07 面试题
UNIX文件名称有什么规定
2013/03/25 面试题
酒店销售主管岗位职责
2014/01/04 职场文书
教师个人自我评价范文
2014/04/13 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
运动会新闻报道稿
2015/07/22 职场文书
健康教育主题班会
2015/08/14 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis