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

python中的多线程:线程何时变为非活动状态?,python,multithreading,sleep,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)

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

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

输出会有所不同,因为多个线程的执行顺序以及每个线程的速度是不确定的

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

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

    print "Finished thread %s" % limit

在函数结束时。

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

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

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

    print "Finished thread %s" % limit

在函数结束时。

你说的“告诉线程何时变为非活动状态”是什么意思?你是对的,它发生在函数完成时。但是你想让程序检测到这一点吗?如果每个线程的打印输出是“混合”的,不要感到惊讶。我对Python不太清楚,但在c/c++中,除非以某种方式同步输出,否则输出可能无法读取是很常见的。很好地解释了使用多线程时幕后发生的事情。你说的“告诉线程何时变为非活动”是什么意思?你是对的,它发生在函数完成时。但是你想让程序检测到这一点吗?如果每个线程的打印输出是“混合”的,不要感到惊讶。我对Python不太清楚,但在c/c++中,除非以某种方式同步输出,否则输出可能无法读取是很常见的。在解释使用多线程时幕后发生的事情方面做得相当好。