python threading模块

1.Thread类

1.1 构造器传参

Thread(group=None, target=None, name=None, args=(), kwargs={}, daemon=None)
  • group:指定的线程组ThreadGroup
  • target:捆绑的方法,是run()方法要调用的可调用对象。
  • name:线程名称,默认名为 Thread- N (N=1,2,3…)
  • args :给捆绑的方法(target)传递的参数元组
  • kwargs :给捆绑的方法(target)传递的参数字典
  • daemon : 显式设置线程是否为守护进程

1.2方法

start()

作用开启线程活动,激活线程后,线程对象将执行run()方法体中的操作。

def test(name):for i in range(5):print(name+'\t'+'hello',i)#创建线程并捆绑一个函数来执行线程
thread01 = Thread(target=test, kwargs={'name':'thread01'})
thread01.start()

run()

代表线程活动的方法。

#类继承的方式重新run
class mytread(Thread):def __init__(self):super(mytread, self).__init__()#重新Thread的run方法def run(self):for i in range(5):print(self.getName()+'\t'+'hello',i)
thread1 = mytread()
thread1.start()

join(timeout=None)

阻塞当前运行代码的线程(也就是调用 join的线程),直到被调用 join()的线程终结 。

如下列中:

  • 主线程调用了thread1线程的join方法,当前运行线程为主线程。
  • 调用者:主线程(因为代码thread1.join()是在主线程中执行的,所有是主线程的调用thread1的join()方法)
  • 被调用者:thread1(thread1线程对象被在主线程中调用了join方法)
  • 结果:阻塞主线程,并直到thread1线程执行完成。
#创建线程tread1
...
#创建线程tread2
...
# 开启新线程
thread1.start()
thread2.start()#主线程调用thread1的join方法,调用者:主线程,被调用者:thread1
#阻塞主线程,直到thread1执行完毕
thread1.join()
#主线程调用thread2的join方法,调用者:主线程,被调用:thread2
#阻塞主线程,直到thread2执行完毕
thread2.join()
print ("退出主线程")

getName()

获取线程名,线程名:只用于识别的字符串。它没有语义。多个线程可以赋予相同的名称。 初始名称由构造函数设置。

setName()

设置线程名。

is_alive()

线程是否还在执行run()中的操作,用来判断线程是否存活。

isDaemon()

判断是否为守护线程

setDaemon()

设为守护线程。

1.3 使用

继承Thread,重新run方法

#类继承的方式重新run
class mytread(Thread):def __init__(self):super(mytread, self).__init__()#重新Thread的run方法def run(self):for i in range(5):print(self.getName()+'\t'+'hello',i)
thread1 = mytread()
thread1.start()
#阻塞当前线程,等待thread1的执行完毕
thread1.join()
print('主线程退出')

创建Thread,捆绑方法体执行

def test(name):#在这编写方法体for i in range(5):print(name+'\t'+'hello',i)#创建线程并捆绑一个函数来执行线程
thread01 = Thread(target=test, kwargs={'name':'thread01'})
thread01.start()

2. Event类

这是线程之间通信的最简单机制之一:一个线程发出事件信号,而其他线程等待该信号。而Event就是用来实现事件对象的类。事件对象管理一个内部标志flag。而这个flag代表了事件信号。

一个线程发出事件信号,而其他线程等待该信号。可以说成:一个线程控制flag,而其他线程等待该flag变为true,然后去执行某件事。

2.1 方法

is_set()

当内部标准位flag为ture时返回true,否则返回false。

set()

设置内部标志位flag为true。所有正在等待这个事件的线程将被唤醒。当标志为true时,调用 wait() 方法的线程不会被被阻塞。

clear()

设置内部标志位flag为false。之后调用 wait() 方法的线程将会被阻塞,直到调用 set() 方法将内部标志再次设置为true。

wait(timeout=None)

阻塞线程,直到内部变量为true。

只有内部变量flag为true(不再进行阻塞),并没有超时,才会返回true。其余情况该方法返回的是false值。

python treading模块相关推荐

  1. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  2. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  3. 关于使用python logging模块的几点总结

    关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...

  4. python高级-模块(14)

    一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...

  5. 转载: Python os 模块的功能以及子函数介绍

    原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...

  6. 简单介绍python process模块

    在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...

  7. python io模块_python中的StringIO模块

    原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...

  8. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

  9. python导入模块有同名_Python:导入与函数同名的模块

    背景:第一次在SE上提问.我在 Python方面还很陌生,而且在编程方面也不是很有经验.我已经四处寻找,但我没有找到这个问题的答案,我非常感谢你的帮助. 我的问题是:如何导入与函数同名的模块? 具体来 ...

最新文章

  1. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?
  2. Django博客系统(写博客页面展示)
  3. 漫画 | 在中国,程序媛到底有多难?
  4. 1.计算机的组成(冯诺依曼体系)
  5. 利用抽象语法树检查Python中“未定义”的变量名
  6. HBase中的时间维度
  7. 一步步教你Hadoop多节点集群安装配置
  8. [计算机网络 谢希仁] 第一章
  9. 华为有了鸿蒙就可以翻身吗,鸿蒙2.0要来了,华为手机能靠此翻身吗?
  10. dice系数什么意思_轮胎上的数字和字母是什么意思 轮胎上的红点黄点是什么意思...
  11. 把hive数据导出至mysql
  12. 小甲鱼python课后题007_[Python]小甲鱼Python视频第007-008课(了不起的分支和循环)课后题及参考解答...
  13. Linux 死机了怎么办
  14. zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。...
  15. 基于 opencv图像去噪
  16. 一个类的类类型是Class类的实例,即类的字节码
  17. SpringDataJPA调用存储过程实例
  18. 分享一些网站有免费的pdf书籍
  19. 深入理解 RPC 之序列化篇 --Kryo
  20. android创建平板模拟器,模拟器创建

热门文章

  1. Jenkins执行批处理文件失败
  2. 如何在windows下安装JDK
  3. android 获得屏幕的大小
  4. python程序把文件编码转换
  5. 操纵自如--页面内的配合与通信
  6. python中的matplotlib(1)
  7. 模板匹配(Match Template)
  8. C# 将PowerPoint文件转换成PDF文件
  9. 字符串的长度超过了为 maxJsonLength 属性设置的值
  10. Spring组件扫描context:component-scan/使用详解