多线程技术
python通过两个标准库thread和threading提供对线程的支持。thread提供了低级别的,原始的线程以及一个简单的锁。threading基于Java的线程模型设计。
1.threading模块
应该避免使用thread模块,原因是它不支持守护线程。当主线程退出时,所有的子线程不管他们是否还在工作,都会被强行退出。有时候并不希望出现此种行为,因此就引入了守护线程的概念。threading模块支持守护线程,所以,我们直接使用threading来改进上述的例子。
#threads.py
#coding:utf-8
from time import sleep,ctime
import threading
#听音乐任务
def music(func,loop):
for i in range(loop):
print('i was listening to %s! %s' % (func,ctime()))
sleep(2)
#看电影任务
def movies(func,loop):
for i in range(loop):
print('i was watch the %s!%s' %(func,ctime()))
sleep(5)
#创建线程数组
threads=[]
#创建线程t1,并添加到线程数组
t1=threading.Thread(target=music,args=(u'爱情买卖',2))
threads.append(t1)
#创建线程t2,并添加到线