1. Thread:表示一个线程的执行的对象。html
2. Lock:锁原语对象app
3. Rlock:可重入锁对象。使单线程能够再次得到已经得到的锁。spa
4. Condition:条件变量对象。能让一个线程停下来,等待其余线程知足了“某个”条件。.net
5. Event:通用的条件变量。多个线程能够等待某个时间的发生,在事件发生后,全部的线程都被激活。线程
6. Semaphore:为等待锁的线程提供一个相似“等候室”的结构code
7. Timer:与thread相似,只是它要等待一段时间后才开始运行。htm
1. Thread.start():开始执行线程。对象
2. Thread.join(timeout=None):阻塞主程序,直到线程结束,若是给了timeout,则最多阻塞timeout秒。blog
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 u'over', 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