threading库主要用于基于线程的并行,核心就是Thread类
  •  
class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
 
并行是什么就不谈了,用threading的主要目的就是为了实现多个任务的并行,比如WiFi throughput测试中读取RSSI值,为了尽量精准,需要在throughput正在跑的时候同时去读RSSI,有些WiFi芯片平台可能还必须在throughput运行中读取才能精准,所以要用threading来执行并行任务。
小白要先从头来学习和理解,最简单和最有效的方式,码代码。
import threading from time import sleep # 定义一个测试函数 def test(i): print('test',i) sleep(1) print('test',i) sleep(1) if __name__ == '__main__' t1 = threading.Thread(target=test, args=('t1',)) #这里有个关键的地方是target的内容是要执行的函数名,不是函数,就是说不要把后面的括号还有参数直接写进来,参数用args来传递 t2 = threading.Thread(traget=test, args=('t2',)) #再加入一个进程,当然对象也可以是其他你想要的函数 t1.start() #启动Thread对象 t2.start()
执行的结果如下:
test t1 test t2 test t1 test t2
这里要理解t1和t2是同时执行了,如果不是同时执行,应该是下面的结果,先把t1执行完,再执行t2。
test t1 test t1 test t2 test t2
还可以尝试稍微改一下start的前后顺序,你会发现结果有两种。
if __name__ == '__main__' t1 = threading.Thread(target=test, args=('t1',)) t2 = threading.Thread(traget=test, args=('t2',)) t2.start() #t2放在前面,t1放在后面 t1.start()
执行的结果:
#执行第一次 test t2 test t1 test t1 test t2 #执行第二次 test t2 test t1 test t2 test t1
有两种结果,其原因我没有深究,现在我也是小白,暂时不去研究看起来似乎有点高深的东西,但是这个帮助我理解了两个线程的确是并行在执行的。

Python之threading初探的更多相关文章

  1. python中threading的用法

    摘自:http://blog.chinaunix.net/uid-27571599-id-3484048.html 以及:http://blog.chinaunix.net/uid-11131943- ...

  2. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  3. python多线程threading.Lock锁用法实例

    本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...

  4. Python 线程(threading) 进程(multiprocessing)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  5. Python 线程(threading)

    Python 的thread模块是比较底层的模块,Python的threading模块是对thread做了一些包装,可以更加方便的 被使用; 1. 使用threading 模块 # 示例一: 单线程执 ...

  6. Python 装饰器初探

    Python 装饰器初探 在谈及Python的时候,装饰器一直就是道绕不过去的坎.面试的时候,也经常会被问及装饰器的相关知识.总感觉自己的理解很浅显,不够深刻.是时候做出改变,对Python的装饰器做 ...

  7. Python之threading多线程,多进程

    1.threading模块是Python里面常用的线程模块,多线程处理任务对于提升效率非常重要,先说一下线程和进程的各种区别,如图 概括起来就是 IO密集型(不用CPU) 多线程计算密集型(用CPU) ...

  8. Python的threading和multiprocessing

    Python的threading 基础用法, 通过 threading.Thread() 创建线程, 然后 start() 和 join() import time import threading ...

  9. python使用threading获取线程函数返回值的实现方法

    python使用threading获取线程函数返回值的实现方法 这篇文章主要介绍了python使用threading获取线程函数返回值的实现方法,需要的朋友可以参考下 threading用于提供线程相 ...

随机推荐

  1. 3、尚硅谷_SSM高级整合_使用ajax操作实现增加员工的功能

    20.尚硅谷_SSM高级整合_新增_创建员工新增的模态框.avi 1.接下来当我们点击增加按钮的时候会弹出一个员工信息的对话框 知识点1:当点击新增的时候会弹出一个bootstrap的一个模态对话框 ...

  2. springboot @Cacheable 基本使用

    加入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  3. HashMap的基本使用

    常用方法 首先,我们应该知道HashMap类实现了Map接口,所以实现了Map常用的一些方法. (1) 插入键值对数据 public V put(K key, V value) (2)根据键值获取键值 ...

  4. MySQL一招入门

    连接mysql数据库命令:mysql -u root -p 创建mysql数据库:create databaase xx库; 创建mysql表: create table db_xx表( id int ...

  5. js基础练习题(6)

    10.其他 1.选择题 var name = 'World!'; (function () { if (typeof name === 'undefined') { var name = 'Nodei ...

  6. 源码剖析@contextlib.contextmanager

    示例 @contextlib.contextmanager def result(a): print('before') yield print('after') 外层装饰源码 包装func函数,真实 ...

  7. 恕我直言你可能真的不会java第11篇-Stream API终端操作

    一.Java Stream管道数据处理操作 在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API.在使用的过程中分为三个阶段.在开始本文之前 ...

  8. Git 新建版本库命令

    Command line instructions Git global setup git config --global user.name "张三" git config - ...

  9. scala数据结构(一)

    一.概述 1,特点 )Scala同时支持不可变集合和可变集合 )两个主要的包: 不可变集合:scala.collection.immutable 可变集合: scala.collection.muta ...

  10. 整理一下CSS最容易躺枪的二十规则,大家能躺中几条?

    整理一下CSS最容易躺枪的二十规则,大家能躺中几条? 转载:API中文网 一.float:left/right 或者 position: absolute 后还写上 display:block? 二. ...