首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别来自使用线程和队列模块的Python脚本的队列返回

识别来自使用线程和队列模块的Python脚本的队列返回
EN

Stack Overflow用户
提问于 2012-09-01 07:22:14
回答 1查看 150关注 0票数 0

我对我之前提出的问题有一个补充问题,如有必要,您可以参考:

Long term instrument data acquisition with Python - Using "While" loops and threaded processes

我已经通过了一堆SO问题和其他阅读,并提出了一个运行良好的代码块,尽管它非常初级:

代码语言:javascript
复制
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的不同实例中的信息,该对象绑定到一个数据采集单元。我防止每个单元返回不同的数据,但我需要将正确的数据与正确的单元相关联。有没有人能告诉我通过queue对象回溯数据源的正确方法?

提前感谢各位的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-01 11:13:21

修改您的ljThread函数以返回标识信息(例如它正在检查的IP地址)以及它读取的数据应该非常容易。只需将最后一行替换为:

代码语言:javascript
复制
queue.put((ue9ipAddr, reading))

然后,当您从队列中获取结果时,执行以下操作:

代码语言:javascript
复制
ip, outcome = queue.get()

然后,您可以使用该IP来执行您需要执行的任何操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12223568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档