0

我有这样的代码。我需要获取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()

有可能做我想做的事吗?

4

2 回答 2

1

文档中:

组应该是无;为实现 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 属性。你应该自己实现。

于 2013-06-26T12:11:20.860 回答
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 类。Thread 有一个构造函数,允许您在 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)

该组应该是无;为实现 ThreadGroup 类时的未来扩展而保留。

参考:Python 文档

于 2020-05-01T03:40:02.847 回答