我将有4个硬件数据采集单元连接到一个单一的控制PC通过硬有线以太网局域网。此应用程序的编码将驻留在PC上,并且完全基于Python。每个数据采集单元都是相同配置的,并且将以相同的方式从PC上进行轮询。它们所连接的测试盒提供我们所寻求的测试的变量输出。
这些测试是长期的(8-16个月或更长时间),数据采集率相对较低(每分钟不到500个样本,可能接近200个)。一般流程也很简单。我将遍历每一个数据采集设备,并且:
我要等一段时间,然后再重复一遍。以下是我的问题:
while TRUE:循环来开始执行我上面概述的序列,并允许通过异常退出循环,但是我欢迎任何关于我应该检查的具体异常的建议--甚至,这是最好的方法吗?另一种方法可能是:一旦进入while循环,我就可以使用try: - except: - finally:构造退出循环。伙计们,提前谢谢。欢迎所有反馈!
发布于 2012-08-28 19:20:11
我在想,使用客户机-服务器模型会更好。
它将很好地分开,因此一个脚本不会影响另一个脚本的状态检查/数据收集。
基本上,您要做的是运行服务器在主计算机上收集数据,这可能有一些终端输入进行维护(日志记录、优雅退出等等)。而且,数据收集PC将像客户端使用what循环(它可以不确定地运行,除非被杀死),在每个数据收集PC上将是服务器/客户端(取决于观点)进行状态检查,并将数据发送到主pc,您将在那里决定要做什么。
另外,如果您使用unix/linux或甚至windows,状态检查只需对机器使用ssh并检查状态(手动或通过主机器的脚本).取决于具体需要..。
尽情享受
发布于 2012-08-28 19:23:46
您可能需要多个循环。如果设备是TCP服务器,您可能希望在内部循环中捕获“断开”的异常并尝试重新连接,而不是永久终止仪器线程。
不确定Python的情况。在C++、C#、Delphi上,我可能会通过等待生产者-消费者队列中的超时来生成等待。如果没有发布任何内容,您所勾画的顺序将按您的意愿重复。如果其他一些偶尔发生的事情需要发生,您可以排队发送一条消息,指示线程向仪器发出必要的命令,或者断开并设置内部的“不要轮询,等待指示重新连接并再次轮询”标志,或者做任何需要做的事情。
这种方法将比停止线程和其他线程连接更干净,仅仅是为了做偶尔的事情。在任何语言中都最好避免停止/终止/重新创建线程。
https://stackoverflow.com/questions/12165652
复制相似问题