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学习笔记:字典的使用示例详解
Jun 13 Python
Python实现SVN的目录周期性备份实例
Jul 17 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
python openpyxl使用方法详解
Jul 18 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
Python 中Operator模块的使用
Jan 30 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 Python
Python机器学习之基础概述
May 19 Python
python基础入门之字典和集合
Jun 13 Python
Python进程池与进程锁之语法学习
Apr 11 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的ASP防火墙
2006/10/09 PHP
模仿OSO的论坛(三)
2006/10/09 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
js创建对象的方式总结
2015/01/10 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
Python科学计算之Pandas详解
2017/01/15 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python简单生成随机数的方法示例
2018/03/31 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
七年级英语教学反思
2014/01/15 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
廉洁使者实施方案
2014/03/29 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
外国人聘用意向书
2014/04/01 职场文书
初中家长寄语
2014/04/02 职场文书
培训协议书范本
2014/04/22 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android