Python 3获取组中的所有线程名称

时间:2013-06-26 12:04:10

标签: multithreading python-3.x

我有这样的代码。 我需要获取 test-grp 组中所有线程的名称。

t = threading.Thread(group='test-grp',name='test1',target=testFunc, args = (arg1,arg2))
t.start()
t2 = threading.Thread(group='test-grp',name='test2',target=testFunc, args = (arg1,arg2))
t2.start()
t3 = threading.Thread(group='test-grp',name='test3',target=testFunc, args = (arg1,arg2))
t3.start()

可以做我想做的事吗?

2 个答案:

答案 0 :(得分:1)

这是该线程的示例程序。

import threading
from time import sleep

def find_cube(n):
        try:
           for i in range(1, n + 1):
               sleep(1)
               print("Cube of {} is : {}".format(i, i * i * i))
        except Exception as e:
           print(e)

def find_square(n):
        try:
           for i in range(1, n + 1):
               sleep(1)
               print("Square of {} is : {}".format(i, i * i))
        except Exception as e:
           print(e)

n = int(input("Enter a size of iteration variable for cube and square : "))
th1 = threading.Thread(target= find_cube , name= "CubeThread",args=(n,),group=None,)
th2  =threading.Thread(target= find_square , name= "SqThread",args=(n,),group=None)
th1.start()
sleep(1)
th2.start()
th1.join()
th2.join()

在上面的程序中,您可以看到该组具有None值,因为像Java一样,到目前为止,我们在python中还没有ThreadGroup类。 线程具有一个构造函数,可让您在java中设置ThreadGroup:

Thread(ThreadGroup group, String name)

我们可以使用此构造函数来设置自己的线程组。 python尚未实现THreadGroup类。

线程模块的设计大致基于Java的线程模型。但是,在Java使锁和条件变量成为每个对象的基本行为的地方,它们在Python中是独立的对象。 Python的Thread类支持Java的Thread类的行为的子集;当前,没有优先级,没有线程组,并且无法破坏,停止,挂起,恢复或中断线程。 Java的Thread类的静态方法在实现后会映射到模块级函数。

threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)

该组应为None;当实现ThreadGroup类时保留给以后的扩展。

参考:Python Documentation

答案 1 :(得分:0)

来自documentation

组应为None;在实现ThreadGroup类时为将来的扩展保留。

代码摘录自threading.Thread:

def __init__(self, group=None, target=None, name=None,
             args=(), kwargs=None, *, daemon=None):
    assert group is None, "group argument must be None for now"

所以现在,你不能使用group属性。你应该自己实现它。