4

我正在使用 threading.py,我有以下代码:

import threading  
class MyClass(threading.Thread):  
    def __init__(self,par1,par2):
       threading.Thread.__init__(self)  
       self.var1 = par1  
       self.var2 = par2  
    def run(self):
       #do stuff with var1 and var2 while conditions are met
... 
... 
... 
myClassVar = MyClass("something",0.0)

我收到以下错误:

18:48:08    57  S E myClassVar = MyClass("something",0.0)  
18:48:08    58  S E File "C:\Python24\Lib\threading.py", line 378, in `__init__`  
18:48:08    59  S E assert group is None, "group argument must be None for now"  
18:48:08    60  S E AssertionError: group argument must be None for now  

我是使用python的新手,这是我第一次使用线程......

这里的错误是什么?

谢谢,

乔纳森

4

2 回答 2

7

您不必扩展Thread即可使用线程。我通常使用这种模式...

def worker(par1, par2):
    pass # do something

thread = threading.Thread(target=worker, args=("something", 0.0))
thread.start()
于 2012-11-02T00:58:28.413 回答
2

您还可以像在示例中那样使用类并覆盖线程,您只需要将对 super 的调用更改为正确。例如:

import threading  
class MyClass(threading.Thread):  
    def __init__(self,par1,par2):
       super(MyClass, self).__init__()
       self.var1 = par1  
       self.var2 = par2  
    def run(self):
       #do stuff with var1 and var2 while conditions are met

对 init 的调用已经被 self 发送给它,所以当你再次提供它时,它会在 Thread 类构造函数中设置另一个参数,事情就会变得混乱。

于 2017-01-10T16:56:12.330 回答