多线程的上手例子

来源:互联网 发布:直播源码 诱导充值 编辑:程序博客网 时间:2024/06/08 05:52

温习了下python的多线程,虽然python中的多线程是伪多线程,但是还是可以熟悉了解下。

#coding:utf-8'''Created on 2017年8月17日@author: zhouxuan'''import threadingimport timedef aa():    print 'start aa'    time.sleep(5)    print 'ok'def bb():    print 'start bb'    time.sleep(3)    print 'done'    if __name__=="__main__":    print 'start time',time.ctime()    threads=[]    t1=threading.Thread(target=aa,args=())    t2=threading.Thread(target=bb,args=())    threads.append(t1)    threads.append(t2)    for i in threads:        i.setDaemon(True)        i.start()    for i in threads:            i.join()    print 'now time',time.ctime()
i.join()的作用是阻塞作用,单独设置循环来阻塞是因为如果都放到一个循环里面,系统就变成了阻塞完第一个了再阻塞第二个,形成了个先后顺序,就没有多线程的作用了。所以要单独开启一个for循环来执行。换乘for后,线程都开启,可以同事阻塞多个线程,直到每个都执行完毕了才退出。

setDaemon()

  setDaemon(True)将线程声明为守护线程,必须在start() 方法调用之前设置,如果不设置为守护线程程序会被无限挂起。子线程启动后,父线程也继续执行下去,当父线程执行完最后一条语句print "all over %s" %ctime()后,没有等待子线程,直接就退出了,同时子线程也一同结束。