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の呼び出しはすでに自己送信されているため、再度指定すると、Threadクラスコンストラクターに別の引数が設定され、混乱します。

于 2017-01-10T16:56:12.330 に答える