python中的多线程:线程何时变为非活动状态?

时间:2012-08-10 09:52:08

标签: python multithreading sleep

这是我的代码,我的输出变化多了。

import threading
import time

def th_fun(limit,sleeptime):
    print '%s' % (limit)
    print '%s number of threads are active' % (threading.activeCount())
    time.sleep(sleeptime)



if __name__ == '__main__':
    for i in range(5):
        t = threading.Thread(target = th_fun , args = (i,1))
        t.start()

有人可以判断线程何时变为非活动状态?我的理解是创建并运行了5个不同的线程对象,一旦执行time.sleeptime(),它就会变为非活动状态。

1 个答案:

答案 0 :(得分:1)

输出是多变的,因为执行多个线程的顺序以及每个线程的速度是不确定的。

一旦发生t.start(),就会使用您提供的参数调用该函数。但是,在下一个线程设置和启动时,它在后台运行。根据运行所需的时间长短,它可能会在下一个线程启动之前完成运行,也可能在所有其他线程启动后完成。

添加以下内容可能有助于您的理解:

    print "Finished thread %s" % limit

在你的功能结束时。