查找Python中活动的线程数的问题

时间:2017-08-23 17:55:49

标签: python multithreading

我需要一些帮助,试图通过以下代码了解正在发生的事情。基本上我试图理解语句threading.active_count()在Python中是如何工作的:

import threading
import time

def worker(count):
    for c in range(count,-1,-1):
        threadname = threading.currentThread().getName()
        time.sleep(2)
        print ("Value of count {} from thread {}".format(c,threadname))
        threadcount = threading.active_count()
        print ("Threadcount is :",threadcount)

mainthreadname = threading.currentThread().getName()
print ("Starting new thread from main thread:",mainthreadname)
t1 = threading.Thread(target=worker,args=(10,))
t1.start()
time.sleep(5)
print ("main thread exiting!")

这里的问题是,尽管获取活动线程计数的行嵌套在范围块内,该行仍在执行,活动线程数为1(我认为是主线程),即使在范围之后块完成执行。

基本上如果有人在他们的机器上运行它们,他们就会得到我想要指出的东西。

有人可以指出这里有什么问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

Threadcount对我来说总是3。另外,考虑将time.sleep(5)更改为t1.join(),这将在worker完成执行时返回。