python Thread初窥

在python中,多线程用到threading模块中的Thread类。

start()重载了run()方法,两者是一样的。

join([timeout]):如果一个线程或者一个函数在执行过程中要调用另外一个线程,并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。当传入一个超时时间,如果到时间了还没完成,也会继续运行主线程。

setDemon([flag]):这个方法基本和join是相反的。当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,此时主线程与子线程并发进行,那么当主线程完成想退出时,会检验子线程是否完成。如果子线程未完成,则主线程会等待子线程完成后再退出。这样我们可以用setDemon()方法,可选参数True/False,当为默认值为False。

代码:

import threading
import time

class myThread(threading.Thread):
    def __init__(self, threadName):
        threading.Thread.__init__(self, name = threadName)
    
    def run(self):
        time.sleep(1)
        for i in range(10):
            print self.name + " " , i
t1 = myThread("t1")
t2 = myThread("t2")
t3 = myThread("t3")
t1.setDaemon(True)
t1.start()
t2.start()
t2.join(3)
t3.start()
i = 1
while threading.activeCount() > 1:
    time.sleep(1)
    print "I am main thread
输出:
t1 t2  0 0
t1  1
t1  2
t1  3
t1  4
t1  5
t1  6
t1  7
t1  8
t1  9

t2  1
t2  2
t2  3
t2  4
t2  5
t2  6
t2  7
t2  8
t2  9
t3  0
 t3  1
I am main thread
t3  2
t3  3
t3  4
t3  5
t3  6
t3  7
t3  8
t3  9
I am main thread


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值