1

这是我的代码,我得到了不同的输出。

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() 被执行,它就会变为非活动状态。

4

1 回答 1

1

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

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

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

    print "Finished thread %s" % limit

在您的功能结束时。

于 2012-08-10T09:57:59.873 回答