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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
对python中类的继承与方法重写介绍
Jan 20 Python
使用python3构建文件传输的方法
Feb 13 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
Golang GBK转UTF-8的例子
Aug 26 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
python如何进行矩阵运算
Jun 05 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
Python echarts实现数据可视化实例详解
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
php 中文处理函数集合
2008/08/27 PHP
PHP5函数小全(分享)
2013/06/06 PHP
php 常用的系统函数
2017/02/07 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
python实现在windows服务中新建进程的方法
2015/06/30 Python
Python常用知识点汇总
2016/05/08 Python
django 常用orm操作详解
2017/09/13 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
AUC计算方法与Python实现代码
2020/02/28 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
Java语言的优势
2015/01/10 面试题
文科教师毕业的自我评价
2014/01/16 职场文书
北京奥运会主题口号
2014/06/13 职场文书
人大调研汇报材料
2014/08/14 职场文书
2014年资料员工作总结
2014/11/18 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
2016教师节感恩话语
2015/12/09 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android