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 回答