码迷,mamicode.com
首页 > 编程语言 > 详细

python库学习笔记(threading库)

时间:2018-05-10 14:26:04      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:func   odi   semaphore   sem   article   isalive   append   主程序   开始   

import threading

threading模块里提供的

  1.  Thread:表示一个线程的执行的对象。

  2.  Lock:锁原语对象

  3.  Rlock:可重入锁对象。使单线程可以再次获得已经获得的锁。

  4.  Condition:条件变量对象。能让一个线程停下来,等待其他线程满足了“某个”条件。

  5.  Event:通用的条件变量。多个线程可以等待某个时间的发生,在事件发生后,所有的线程都被激活。

  6.  Semaphore:为等待锁的线程提供一个类似“等候室”的结构

  7.  Timer:与thread类似,只是它要等待一段时间后才开始运行。

threading的Thread类里的方法。

  1.  Thread.start():开始执行线程。

  2.  Thread.join(timeout=None):阻塞主程序,直到线程结束,如果给了timeout,则最多阻塞timeout秒。

  3.  Thread.run():定义线程的功能(一般会被子类重写)

  4.  Thread.getName():返回线程的名字。

  5.  Thread.setName():设置线程的名字。

  6.  Thread.isAlive():检查线程是否还在执行。

  7.  Thread.isDaemon():查看线程是不是守护线程。

  8.  Thread.setDaemon():True为设置守护线程,False就不是,一定要在start()方法前调用。

实例:

 1 # -*- coding: utf-8
 2 import threading
 3 from time import ctime, sleep
 4 
 5 def music(func):
 6     for i in range(2):
 7         print "I was listening to %s. %s" % (func, ctime())
 8         sleep(1)
 9 
10 def movie(func):
11     for i in range(2):
12         print "I was watching the %s. %s" % (func, ctime())
13         sleep(5)
14 
15 #开始创建线程
16 threads = []
17 t1 = threading.Thread(target=music, args=(u爱情买卖,))
18 threads.append(t1)
19 t2 = threading.Thread(target=movie, args=(u阿凡达,))
20 threads.append(t2)
21 
22 
23 if __name__ == __main__:
24     for t in threads:
25         t.start() #运行线程
26     t.join() #阻塞主进程,直到第二个线程结束。
27     print uover, ctime()

如果把第18行代码放在第20行代码后面,会出现不一样的结果。因为第26行代码中的t.join()只能保证循环中的最后一个线程运行结束,可以为每一个线程都设置一个join()方法。

1 for t in threads:
2     t.join

 参考博文:

https://www.cnblogs.com/fnng/p/3670789.html

https://blog.csdn.net/eastmount/article/details/50155353

 

python库学习笔记(threading库)

标签:func   odi   semaphore   sem   article   isalive   append   主程序   开始   

原文地址:https://www.cnblogs.com/Alfred-ou/p/9016973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!