0

以前に尋ねた質問の補足質問があります。必要に応じて参照できます。

Pythonによる長期的な機器データの取得-「While」ループとスレッド化されたプロセスの使用

私はたくさんのSOの質問やその他の読み物を調べ、非常に初歩的なものですが、正常に機能するコードのブロックを思いつきました。

import ue9
import LJ_Util
import DAQ_Util
import threading
import Queue

queue = Queue.Queue()

def ljThread(ue9ipAddr):
    print '\nExecuting in ljThread...'
    a = ue9.UE9(ethernet=True, ipAddress=ue9ipAddr)
    reading = a.feedback()
    queue.put(reading)

print "Opening device...\n",
# Opens a UE9 at IP Address 192.168.1.127
ipAdd = '192.168.1.127'
feedbackThread = threading.Thread(target=ljThread, args=(ipAdd,))
feedbackThread.start()

outcome = queue.get()
print outcome
print "\nDone"

私の質問は、個々のスレッドを使用して、データ取得ユニットに関連付けられているオブジェクトue9.UE9のさまざまなインスタンスからの情報にアクセスしたいということです。各ユニットが異なるデータを返すことを期待していますが、適切なデータを適切なユニットに関連付ける必要があります。データを呼び出し元のスレッドに戻すために使用されているキューオブジェクトを介してソースを追跡する正しい方法を誰かに教えてもらえますか?

皆さん、よろしくお願いします。

4

1 に答える 1

0

ljThread関数を変更して、読み取ったデータとともに識別情報(チェックしていたIPアドレスなど)を返すのは非常に簡単です。最後の行を次のように置き換えるだけです。

queue.put((ue9ipAddr, reading))

次に、キューから結果を取得するときに、次の手順を実行します。

ip, outcome = queue.get()

その後、IPを使用して必要なことをすべて実行できます。

于 2012-09-01T03:13:21.343 に答える