全文参考: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 类相关推荐

  1. Python多线程编程(一):threading 模块 Thread 类的用法详解

    我们进行程序开发的时候,肯定避免不了要处理并发的情况. 一般并发的手段有采用多进程和多线程. 但线程比进程更轻量化,系统开销一般也更低,所以大家更倾向于用多线程的方式处理并发的情况. Python 提 ...

  2. 【Python】称重系统-异步执行多线程运行threading 模块 Thread 类实现

    上次实现了从一个py程序窗口引用另一个py程序,但是发现原来的py窗口关不掉,最后学到一个新的方法-异步执行,Python的多线程编程,使用了threading 模块,可以同时运行两段代码.完美解决之 ...

  3. python多线程返回值问题重写Thread类的run方法

    python多线程使用 文章目录 python多线程使用 一.案例 二.说明 1.针对第一种是有返回值的 ,可以通过future.result() 去拿到每个线程返回值 2.无返回值问题 3.我们可以 ...

  4. python多线程编程(1): python对多线程的支持

    From: http://www.cnblogs.com/holbrook/archive/2012/03/01/2376408.html 前面介绍过多线程的基本概念,理解了这些基本概念,掌握pyth ...

  5. python多线程编程_python多线程编程(1): python对多线程的支持

    前面介绍过多线程的基本概念,理解了这些基本概念,掌握python多线程编程就比较容易了. 在开始之前,首先要了解一下python对多线程的支持. 虚拟机层面 Python虚拟机使用GIL(Global ...

  6. Python多线程编程之线程子类化

    Python多线程编程之线程子类化 基本思路 Threading模块简介 **MyThread**主要代码 实例 所有代码 运行结果 基本思路 导入Threading模块下的Thread类,将其子类化 ...

  7. Python并发编程之threading模块

    Python并发编程之threading模块 threading 模块 1. Timer对象 2. Lock对象 3. RLock 4. 信号量和有边界的信号量 5. 事件 6. 条件变量 7. 使用 ...

  8. Python多线程编程(详细:适合小白入门)

    目录 前言 一.进程 1.多任务 2.进程 3.多进程完成多任务 3.1进程的创建步骤 3.2通过进程类创建进程对象 3.3创建进程和启动的代码 4. 进程执行带有参数的任务 5.获取进程编号 6.进 ...

  9. python 多线程编程之_thread模块

    python 多线程编程之_thread模块 参考书籍:python核心编程 _thread模块除了可以派生线程外,还提供了基本的同步数据结构,又称为锁对象(lock object,也叫原语锁.简单锁 ...

最新文章

  1. postmaster.c 中的 ListenAddresses
  2. [HAOI2009]毛毛虫
  3. python基础语法及知识总结-Python 学习完基础语法知识后,如何进一步提高?
  4. 计算机房防火要求,信息机房如何进行防火设计
  5. 使用jstack查看某个Java进程内的线程堆栈信息
  6. leetcood学习笔记-112-路径总和
  7. mysql json 引号 双引号_关于JSON字符串key缺少双引号的解决方法 的讲解
  8. Win7下使用toad连接oracle出现can't initialize OCI -1
  9. 建立windows2003 域名服务器
  10. zz机器学习与人工智能学习资源导引
  11. python降维方法_python大战机器学习——数据降维
  12. Linux shell中21的含义解释 (全网最全,看完就懂)
  13. StudentManageSystem(学生管理系统)
  14. 计算机地图制图的优势,计算机地图制图
  15. C#基础面试题(附答案)
  16. C3P Cast-Designer 是可以直接设计量产方案的工具,不只是模拟
  17. GitHub 代码托管平台提交代码时 emoji 表情的使用
  18. 大数据有哪些软件可以使用?
  19. RateLimiter高并发访问限流
  20. 因缺思厅Qpython爱之初体验

热门文章

  1. 一起谈.NET技术,asp.net页面中输出变量、Eval数据绑定等总结
  2. java实例_Java线程方式及实例
  3. 设置php中字符编码_php如何设置字符编码
  4. python绘制函数曲线x2sin(x2-x-2)_下面哪几个选项中的语句能够完成用fplot语句来绘制函数y=x^3+2*x^2+sin(x)在区间[-5,5]上的图形。...
  5. 计算机小白可以学python吗_非计算机专业小白如何系统学Python语言
  6. Halcon和Visionpro的对比
  7. 黑群晖vmm专业版_Virtual Machine Manager 专业版打造高效安全虚拟环境
  8. Mysql基础知识--视图
  9. 马化腾提问_互联网融合创新会带来哪些改变_知乎回答部分总结
  10. 第六章 面向对象的程序设计