2017-04-26 4 views
0

スレッドを使用するプログラムを作成し始めましたが、Pythonでスレッドを開始する方法を検索した後、同じことを達成する2つの方法が見つかりました。違いや利点があるはずです。どの道を下るべきか混乱した。マルチスレッドクラスとメソッド

スレッドはバックグラウンドで連続して実行され、ユーザーがプログラムに指示するまで停止しません。また、起動時に1つ以上の引数がスレッドに渡されます。

片道使用してクラス:

from threading import Thread 

class myClassA(Thread): 
    def __init__(self): 
     Thread.__init__(self) 
     self.daemon = True 
     self.start() 
    def run(self): 
     while True: 
      print 'A' 

myClassA() 
while True: 
    pass 

第二の方法使用方法:

from threading import Thread 

def runA(): 
    while True: 
     print 'A\n' 

if __name__ == "__main__": 
    t1 = Thread(target = runA) 
    t1.setDaemon(True) 
    t1.start() 
    while True: 
     pass 
+0

最後の例で 't1.daemon = True'を使うべきです。 '__init __()で' .start()を呼び出す前に、https://docs.python.org/2/library/threading.html#importing-in-threaded-codeに記載されているインポート制限を理解してください。 ) 'グローバルオブジェクトのメソッド – thebjorn

答えて

0

クラスを使用するための親指の私のルールは、あなたが良いユースケースを見つけるまで、あなたがそれらを使用してはならないことです彼らのために。 1つのユースケースは、スレッドとやり取りする複数のメソッドを定義する場合です。しかし、通常は開発者はクラスを設計するときに未来を見ることができないので、関数を使用してコードを作成するほうが優れています。つまり、クラスを設計するのに多くの時間を費やし、実装した多くの機能を使用したり必要がなくなったりすることはありません。あなたの時間を無駄にし、あなたのコードを何の理由もなく複雑にしました。

関連する問題