Python多线程编程---(1)threading 模块 Thread 类
全文参考:Python多线程编程(一):threading 模块 Thread 类的用法详解_frank 的专栏-CSDN博客
最近看了下团队自动化测试用例的代码,里面有涉及并行处理的逻辑,主要是基于python的threading 模块来实现的,但运行结果出现了一些奇怪的现象,花了一天的时候改去改来没问题定位到原因,归根结底还是自己对多线程这一块不熟悉,因此注备花点时间学习下python的threading 模块用法。
一般并发的手段有采用多进程和多线程,但线程比进程更轻量化,系统开销一般也更低,所以大家更倾向于用多线程的方式处理并发的情况。
Python 提供多线程编程的方式,Python 实现多线程编程需要借助于 threading 模块,下面的示例基于Python3来实现。
引用方式如下,threading 模块中最核心的内容是 Thread 这个类。
import threading
我们要创建 Thread 对象,然后让它们运行,每个 Thread 对象代表一个线程,在每个线程中我们可以让程序处理不同的任务,这就是多线程编程。值得注意的是,程序运行时默认就是在主线程上。
创建 Thread 对象有 2 种手段。
(1)直接创建 Thread ,将一个 callable 对象从类的构造器传递进去,这个 callable 就是回调函数,用来处理任务。
编写一个自定义类继承 Thread,然后复写 run() 方法,在 run() 方法中编写任务处理代码,然后创建这个 Thread 的子类。
(2)编写一个自定义类继承 Thread,然后复写 run() 方法,在 run() 方法中编写任务处理代码,然后创建这个 Thread 的子类。
1. 直接创建 Thread 对象
class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
示例代码:
import threading
import timedef test():for index in range(5):print(threading.current_thread().name + ' test ', index)time.sleep(1)thread = threading.Thread(target=test)
thread.start() # 启动线程for i in range(5):print(threading.current_thread().name + ' main ', i)time.sleep(1)
Python多线程编程---(1)threading 模块 Thread 类相关推荐
- Python多线程编程(一):threading 模块 Thread 类的用法详解
我们进行程序开发的时候,肯定避免不了要处理并发的情况. 一般并发的手段有采用多进程和多线程. 但线程比进程更轻量化,系统开销一般也更低,所以大家更倾向于用多线程的方式处理并发的情况. Python 提 ...
- 【Python】称重系统-异步执行多线程运行threading 模块 Thread 类实现
上次实现了从一个py程序窗口引用另一个py程序,但是发现原来的py窗口关不掉,最后学到一个新的方法-异步执行,Python的多线程编程,使用了threading 模块,可以同时运行两段代码.完美解决之 ...
- python多线程返回值问题重写Thread类的run方法
python多线程使用 文章目录 python多线程使用 一.案例 二.说明 1.针对第一种是有返回值的 ,可以通过future.result() 去拿到每个线程返回值 2.无返回值问题 3.我们可以 ...
- python多线程编程(1): python对多线程的支持
From: http://www.cnblogs.com/holbrook/archive/2012/03/01/2376408.html 前面介绍过多线程的基本概念,理解了这些基本概念,掌握pyth ...
- python多线程编程_python多线程编程(1): python对多线程的支持
前面介绍过多线程的基本概念,理解了这些基本概念,掌握python多线程编程就比较容易了. 在开始之前,首先要了解一下python对多线程的支持. 虚拟机层面 Python虚拟机使用GIL(Global ...
- Python多线程编程之线程子类化
Python多线程编程之线程子类化 基本思路 Threading模块简介 **MyThread**主要代码 实例 所有代码 运行结果 基本思路 导入Threading模块下的Thread类,将其子类化 ...
- Python并发编程之threading模块
Python并发编程之threading模块 threading 模块 1. Timer对象 2. Lock对象 3. RLock 4. 信号量和有边界的信号量 5. 事件 6. 条件变量 7. 使用 ...
- Python多线程编程(详细:适合小白入门)
目录 前言 一.进程 1.多任务 2.进程 3.多进程完成多任务 3.1进程的创建步骤 3.2通过进程类创建进程对象 3.3创建进程和启动的代码 4. 进程执行带有参数的任务 5.获取进程编号 6.进 ...
- python 多线程编程之_thread模块
python 多线程编程之_thread模块 参考书籍:python核心编程 _thread模块除了可以派生线程外,还提供了基本的同步数据结构,又称为锁对象(lock object,也叫原语锁.简单锁 ...
最新文章
- postmaster.c 中的 ListenAddresses
- [HAOI2009]毛毛虫
- python基础语法及知识总结-Python 学习完基础语法知识后,如何进一步提高?
- 计算机房防火要求,信息机房如何进行防火设计
- 使用jstack查看某个Java进程内的线程堆栈信息
- leetcood学习笔记-112-路径总和
- mysql json 引号 双引号_关于JSON字符串key缺少双引号的解决方法 的讲解
- Win7下使用toad连接oracle出现can't initialize OCI -1
- 建立windows2003 域名服务器
- zz机器学习与人工智能学习资源导引
- python降维方法_python大战机器学习——数据降维
- Linux shell中21的含义解释 (全网最全,看完就懂)
- StudentManageSystem(学生管理系统)
- 计算机地图制图的优势,计算机地图制图
- C#基础面试题(附答案)
- C3P Cast-Designer 是可以直接设计量产方案的工具,不只是模拟
- GitHub 代码托管平台提交代码时 emoji 表情的使用
- 大数据有哪些软件可以使用?
- RateLimiter高并发访问限流
- 因缺思厅Qpython爱之初体验
热门文章
- 一起谈.NET技术,asp.net页面中输出变量、Eval数据绑定等总结
- java实例_Java线程方式及实例
- 设置php中字符编码_php如何设置字符编码
- python绘制函数曲线x2sin(x2-x-2)_下面哪几个选项中的语句能够完成用fplot语句来绘制函数y=x^3+2*x^2+sin(x)在区间[-5,5]上的图形。...
- 计算机小白可以学python吗_非计算机专业小白如何系统学Python语言
- Halcon和Visionpro的对比
- 黑群晖vmm专业版_Virtual Machine Manager 专业版打造高效安全虚拟环境
- Mysql基础知识--视图
- 马化腾提问_互联网融合创新会带来哪些改变_知乎回答部分总结
- 第六章 面向对象的程序设计