0

私がする必要があるのは、同じコマンドのセットを複数のデバイスに対して何度も実行することです。しかし、私はそれを同時に行う必要があります。一連のコマンドを他のデバイスに送信する前に、1 ~ 3 秒の間隔で問題ありません。そこで糸を使うことにした。

コードは次のようになります。

class UseThread(threading.Thread):

    def __init__(self, devID):
        super(UseThread, self).__init__()
        ... other commands ....
        ... other commands ....
        ... other commands ....

   file = open(os.path.dirname(os.path.realpath(__file__)) + '\Samples.txt','r')

   while 1:
       line = file.readline()
       if not line:
           print 'Done!'
           break
       for Code in cp.options('code'):
           line = cp.get('product',Code)
           line = line.split(',')
           for devID in line:
               t=UseThread(devID)
               t.start()

すべてのデバイスで最初の試行を実行して結果を記録することができましたが、2 回目の試行では、「Monkey Command : wake」というコードのどこかでハングします。

このように動作させるスレッドの何が問題になっていますか?

4

1 に答える 1

1

スレッド化されたコードはrun()メソッド内にある必要があります。

メソッドにあるものは何でも__init__()、新しいオブジェクトが作成されるときに、スレッドをセットアップする前に呼び出されます (したがって、呼び出しスレッドの一部です)。

class UseThread(threading.Thread):
    def __init__(self, devID):
        super(UseThread, self).__init__()
        self.devID = devID
    def run(self):
        ## threaded stuff ....
        ## threaded stuff ....
        pass

## ...
for devID in line:
   t=UseThread(devID) # this calls UseThread.__init__()
   t.start()          # this creates a new thread that will run UseThread.run()
于 2013-02-12T09:24:17.687 に答える