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实现绘制树枝简单示例
Jul 24 Python
django 常用orm操作详解
Sep 13 Python
python中装饰器级连的使用方法示例
Sep 29 Python
快速了解Python相对导入
Jan 12 Python
python中partial()基础用法说明
Dec 30 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
Python Tornado核心及相关原理详解
Jun 24 Python
五种Python转义表示法
Nov 27 Python
flask项目集成swagger的方法
Dec 09 Python
Django权限控制的使用
Jan 07 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 stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
List Installed Software Features
2007/06/11 Javascript
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
python文件和目录操作函数小结
2014/07/11 Python
Python 多线程Threading初学教程
2017/08/22 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
python适合人工智能的理由和优势
2019/06/28 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
Python ellipsis 的用法详解
2020/11/20 Python
竞选学习委员演讲稿
2014/04/28 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
教师工作失职检讨书
2014/09/18 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
离职告别感言
2015/08/04 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL