python学习系列之多线程

来源:互联网 发布:湖南省网络交易监管网 编辑:程序博客网 时间:2024/06/08 07:46

一.多线程学习
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 threadingfrom time import ctime,sleepdef 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()
0 0
原创粉丝点击