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常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
python多进程实现进程间通信实例
Nov 24 Python
python获取代理IP的实例分享
May 07 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
OpenCV图像颜色反转算法详解
May 13 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
基于Python中random.sample()的替代方案
May 23 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
python 安全地删除列表元素的方法
Mar 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
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Python3 处理JSON的实例详解
2017/10/29 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
python监控文件并且发送告警邮件
2018/06/21 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
编写strcpy函数
2014/06/24 面试题
求职信范文怎么写
2014/01/29 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
盲山观后感
2015/06/11 职场文书
新闻通讯稿范文
2015/07/22 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
JS继承最简单的理解方式
2021/03/31 Javascript
我的收音机情缘
2022/04/05 无线电