1.设计概要
程序设计的最大问题是解耦。相关的模块之间的联系越少越好。看看下面这个设计:
1.1 数据源设计
- 采集设备或者桩模块拿到数据后,会发布到指定的命名管道,等待数据处理程序处理。
- 相关的二进制数据会通过共享内存预先缓冲。
- 命名管道未撤销,或者共享内存尚未销毁,直接跳过。
- 命名管道在超时等待后直接关闭.
数据处理程序,与数据源设计类似,也是超时自动退出。
上面设计的好处是,数据源不依赖数据消费者,可以自行轮转。后面的分析进程可以单独选取自己希望处理的数据通道,分别处理。数据通道与数据处理程序之间不存在任何形式的绑定。
2.代码构建
2.1 第一版
2.1.1 数据源
import win32pipe
import win32file
# 创建一个命名管道
named_pipe_path = r'\\.\pipe\my_named_pipe'
pipe = win32pipe.CreateNamedPipe(
named_pipe_path,
win32pipe.PIPE_ACCESS_DUPLEX,
win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_READM