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函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python回调函数用法实例详解
Jul 02 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
详解Python 切片语法
Jun 10 Python
详解python解压压缩包的五种方法
Jul 05 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
基于Python模拟浏览器发送http请求
Nov 06 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 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你的验证码安全码?
2007/01/02 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php MessagePack介绍
2013/10/06 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
Python中查看文件名和文件路径
2017/03/31 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
文员岗位职责
2013/11/09 职场文书
公司培训欢迎词
2014/01/10 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
园艺师求职信
2014/03/10 职场文书
团日活动总结
2014/04/28 职场文书
求职信格式要求
2014/05/23 职场文书
邀请函范文
2015/02/02 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
python 下载文件的几种方式分享
2021/04/07 Python
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL