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 命令行非阻塞输入的小例子
Sep 27 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
浅析Python中的for 循环
Jun 09 Python
python实现获取Ip归属地等信息
Aug 27 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
详解Django CAS 解决方案
Oct 30 Python
python虚拟环境模块venv使用及示例
Mar 04 Python
Python如何将将模块分割成多个文件
Aug 04 Python
ASP.NET Core中的配置详解
Feb 05 Python
Python 的 sum() Pythonic 的求和方法详细
Oct 16 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php 日期时间处理函数小结
2009/12/18 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
PHP实现文件上传与下载
2020/08/28 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
详解vue在项目中使用百度地图
2019/03/26 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
python将ip地址转换成整数的方法
2015/03/17 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
品管员岗位职责
2013/11/10 职场文书
大学活动邀请函
2014/01/28 职场文书
云台山导游词
2015/02/03 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python