python库学习笔记(threading库)
Posted Alfredfly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python库学习笔记(threading库)相关的知识,希望对你有一定的参考价值。
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 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
以上是关于python库学习笔记(threading库)的主要内容,如果未能解决你的问题,请参考以下文章