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二分法实现实例
Nov 21 Python
Python 字典(Dictionary)操作详解
Mar 11 Python
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
Python 基础教程之str和repr的详解
Aug 20 Python
选择python进行数据分析的理由和优势
Jun 25 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
python实现程序重启和系统重启方式
Apr 16 Python
Python通过Pillow实现图片对比
Apr 29 Python
python matplotlib绘制三维图的示例
Sep 24 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使用curl模拟登录后采集页面的例子
2013/11/04 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
2014/07/15 PHP
php购物车实现方法
2015/01/03 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
javascript显示中文日期的方法
2015/06/18 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
js的三种继承方式详解
2017/01/21 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
Python中bisect的用法
2014/09/23 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
python调用私有属性的方法总结
2020/07/24 Python
python爬取抖音视频的实例分析
2021/01/19 Python
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
前台文员岗位职责
2013/12/28 职场文书
联谊活动策划书
2014/01/26 职场文书
初中新生军训方案
2014/05/13 职场文书
整改报告格式
2014/11/06 职场文书
忠诚与背叛观后感
2015/06/04 职场文书