专栏名称: python实战
Python实战
目录
相关文章推荐
Python爱好者社区  ·  吴恩达,yyds ·  昨天  
Python爱好者社区  ·  模仿一下领导说话的样子 ·  2 天前  
Python爱好者社区  ·  DeepSeek又爆了。。。 ·  2 天前  
Python爱好者社区  ·  今年程序员这薪资是认真的吗? ·  3 天前  
Python爱好者社区  ·  Python接入DeepSeek,太强了! ·  4 天前  
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() 方法等待线程的结束。









请到「今天看啥」查看全文


推荐文章
Python爱好者社区  ·  吴恩达,yyds
昨天
Python爱好者社区  ·  模仿一下领导说话的样子
2 天前
Python爱好者社区  ·  DeepSeek又爆了。。。
2 天前
Python爱好者社区  ·  今年程序员这薪资是认真的吗?
3 天前
Python爱好者社区  ·  Python接入DeepSeek,太强了!
4 天前
电商行业  ·  在房价面前,你的创业一文不值
7 年前