您的位置:首页 > 编程语言 > Python开发

python学习系列之多线程

2015-08-20 19:05 936 查看
一.多线程学习

python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补。所以我们直接学习threading即可。

创建线程:
t=threading.Thread(target=函数名,args=(u'',u'',...))


启动线程:
t.start()


二.threading的setDaemon、join的用法

1.t.setDaemon(True)

主线程A中,创建了子线程B,并且在主线程A中调用了B.setDaemon(True),这个的意思是,把主线程A设置为守护线程,这时候,要是主线程A执行结束了,就不管子线程B是否完成,一并和主线程A退出

2.t.join()

主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行

注:join([timeout]) 里面的参数时可选的,代表线程运行的最大时间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接着执行的。

import threading
from time import ctime,sleep

def music(name,age):
for i in range(3):
print "i was listening %s %s %s" %(name,age,ctime())
sleep(2)

def move(address):
for i in range(3):
print "i was at %s %s" %(address,ctime())
sleep(5)

threads=[]
t1=threading.Thread(target=music,args=(u'love',u'age'))
threads.append(t1)
t2=threading.Thread(target=move,args=(u'shuyang',))
threads.append(t2)

if __name__=='__main__':
for t in threads:
t.setDaemon(True)
t.start()

print "all over %s" %ctime()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: