专栏名称: python实战
Python实战
目录
相关文章推荐
Python中文社区  ·  用 Python 精准捕捉市场趋势反转信号 ·  2 天前  
Python爱好者社区  ·  75k,确实可以封神了! ·  2 天前  
Python爱好者社区  ·  王者归来!LSTM 终于爆发了。。。 ·  5 天前  
Python爱好者社区  ·  ML书.pdf ·  3 天前  
Python爱好者社区  ·  刚刚,2025 中国大学排名发布 ·  5 天前  
51好读  ›  专栏  ›  python实战

重点之重 python之多线程编程(二)

python实战  · 公众号  · Python  · 2017-01-15 22:31

正文


前面我们介绍了thread模块实现的多线程,但thread模块级别低,并且不支持守护线程这个概念,当主线程退出时所有的子线程也被终止了。所以我们可以使用更高级别,功能更全面的threading模块来管理线程。

threading 模块中有个Thead类,这个模块支持守护线程,主线程将在所有非守护现场退出后才退出,所以只要设置好thread.setDaemon=True,来检测线程的状态就可以达到目的。

下面是使用Treading模块中的Thread类实现的多线程,结果如下:


代码如下:

#!/usr/bin/envpython

# coding:utf-8

import threading

from time importctime,sleep

def f1():

    for i in range(4):

        print u'看书...',ctime()

        sleep(1)

    #lock.release()

def f2():

    for i in range(2):

        print u'听音乐...',ctime()

        sleep(1)

threads = []

t1=threading.Thread(target=f1)

threads.append(t1)

t2=threading.Thread(target=f2)

threads.append(t2)       

 

if__name__=='__main__':

    print u'开始时间',ctime()

    for t in threads:

        t.setDaemon(True)

        t.start()

    for t in threads:

        t.join()

print u'结束',ctime()

在上面的例子中,当所有的线程都分配完成之后,通过调用每个线程的start()方法开始执行,相比于管理一组锁(分配、获取、释放、检查锁状态)而言,只需要每个线程调用join()的方法,用join()方法等待线程的结束。



大家可以自行在电脑上敲敲看,感受下。想要获取更多教学资料请+群:330637182   python学习交流无论是新手教学还是项目实战群内应有尽有。



推荐文章
Python中文社区  ·  用 Python 精准捕捉市场趋势反转信号
2 天前
Python爱好者社区  ·  75k,确实可以封神了!
2 天前
Python爱好者社区  ·  王者归来!LSTM 终于爆发了。。。
5 天前
Python爱好者社区  ·  ML书.pdf
3 天前
Python爱好者社区  ·  刚刚,2025 中国大学排名发布
5 天前
财税实务课堂  ·  一个人见没见过世面,看这两点就够了
7 年前
雾满拦江  ·  世界上这么多未解之谜,我只要你
7 年前