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批量下载图片的三种方法
Apr 22 Python
Python中编写ORM框架的入门指引
Apr 29 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
python3去掉string中的标点符号方法
Jan 22 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
Python调用shell cmd方法代码示例解析
Jun 18 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
Python 如何创建一个线程池
Jul 28 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
1 Tube Radio
2021/03/02 无线电
PHP date函数参数详解
2006/11/27 PHP
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
Sea.JS知识总结
2016/05/05 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
Python匹配中文的正则表达式
2016/05/11 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python输出各行命令详解
2018/02/01 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
python实现公司年会抽奖程序
2019/01/22 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
求职简历中个人的自我评价
2013/12/25 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
旷工辞退通知书
2015/04/17 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
七年级作文之雪景
2019/11/18 职场文书
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
Go语言特点及基本数据类型使用详解
2022/03/21 Golang
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python