博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python线程学习
阅读量:6166 次
发布时间:2019-06-21

本文共 1357 字,大约阅读时间需要 4 分钟。

 

Python3 通过两个标准库 _thread 和 threading 提供对线程的支持。

_thread 提供了低级别的、原始的线程以及一个简单的锁,它相比于 threading 模块的功能还是比较有限的。

threading 模块除了包含 _thread 模块中的所有方法外,还提供的其他方法:

  • threading.currentThread(): 返回当前的线程变量。
  • threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
  • threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:

  • run(): 用以表示线程活动的方法。
  • start():启动线程活动。
  • join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
  • isAlive(): 返回线程是否活动的。
  • getName(): 返回线程名。
  • setName(): 设置线程名。

---------------------

threading.RLock和threading.Lock 的区别

RLock允许在同一线程中被多次acquire。而Lock却不允许这种情况。 如果使用RLock,那么acquire和release必须成对出现,即调用了n次acquire,必须调用n次的release才能真正释放所占用的锁

 

同步条件threading.Event

Event是线程间通信最间的机制之一:一个线程发送一个event信号,其他的线程则等待这个信号。用于主线程控制其他线程的执行。 Events 管理一个flag,这个flag可以使用set()设置成True或者使用clear()重置为False,wait()则用于阻塞,在flag为True之前。flag默认为False。

  • Event.wait([timeout]) : 堵塞线程,直到Event对象内部标识位被设为True或超时(如果提供了参数timeout)
  • Event.set() :将标识位设为Ture
  • Event.clear() : 将标识位设为False
  • Event.isSet() :判断标识位是否为Ture

 

信号量(Semaphore)

   信号量用来控制线程并发数的,BoundedSemaphore或Semaphore管理一个内置的计数 器,每当调用acquire()时-1,调用release()时+1。

      计数器不能小于0,当计数器为 0时,acquire()将阻塞线程至同步锁定状态,直到其他线程调用release()。(类似于停车位的概念)

      BoundedSemaphore与Semaphore的唯一区别在于前者将在调用release()时检查计数 器的值是否超过了计数器的初始值,如果超过了将抛出一个异常。

转载于:https://www.cnblogs.com/xinmomoyan/p/10134261.html

你可能感兴趣的文章
Thymeleaf的基本语法总结
查看>>
安装activemq和java代码实现生产和消费
查看>>
TypeScript基础学习
查看>>
读安晓辉老师的访谈有感
查看>>
jQuery 的选择器
查看>>
书籍列表
查看>>
scrollview 例子2
查看>>
20165211 2017-2018-2 《Java程序设计》课程总结
查看>>
C# 截取字符串某个字符分割的最后一部分
查看>>
css2选择器
查看>>
Selenium Chrome浏览器的启动以及proxy设置
查看>>
uCOS-II+LwIP+DM9000(源代码)
查看>>
BZOJ3172:[TJOI2013]单词——题解
查看>>
洛谷4643:【模板】动态dp——题解
查看>>
python三大神器之virtualenv pip, virtualenv, fabric通称为pythoner的三大神器。
查看>>
MPMoviePlayerController播放视频
查看>>
java批量解压文件夹下的所有压缩文件(.rar、.zip、.gz、.tar.gz)
查看>>
[转] Transformer
查看>>
回溯法--装载问题
查看>>
HTML中的GroupBox
查看>>