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的函数嵌套的使用方法
Jan 24 Python
Python读写Redis数据库操作示例
Mar 18 Python
Python入门_学会创建并调用函数的方法
May 16 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
Python reversed函数及使用方法解析
Mar 17 Python
pycharm sciview的图片另存为操作
Jun 01 Python
python获取百度热榜链接的实例方法
Aug 25 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
如何用python批量调整视频声音
Dec 22 Python
python实现简单的学生管理系统
Feb 22 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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
收音机的保养
2021/03/01 无线电
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
JS实现瀑布流布局
2017/10/21 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
Python数据类型详解(一)字符串
2016/05/08 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
法学专业应届生求职信
2013/10/16 职场文书
师范大学毕业自我鉴定
2013/11/21 职场文书
工业学校毕业生自荐书
2014/01/03 职场文书
集体生日活动方案
2014/08/18 职场文书
委托证明书
2014/09/17 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
2016年小学生新年寄语
2015/08/18 职场文书