Python Windows上Pyserial的非阻塞/忙等待使用:如何实时监控多个串行端口?

Python Windows上Pyserial的非阻塞/忙等待使用:如何实时监控多个串行端口?,python,windows,serial-port,nonblocking,pyserial,Python,Windows,Serial Port,Nonblocking,Pyserial,我有一个硬件测试设置,其中多达255个节点通过USB连接的虚拟COM端口向我的windows系统发送跟踪消息。实际上,我使用了一个小型Python脚本,它在所有打开的串行端口上运行轮询循环,并在零超时的情况下执行读线。读取行打印时添加了COM端口源和时间戳到控制台。这在几乎实时的情况下工作得相当好。但是CPU的使用率是相当高的,正如你所能想象的。因此,我正在寻找一种方法来并行实时监控所有COM端口,而无需轮询 (查找nonblocking())表示有类似于POSIX的select接口,但仅在UN

我有一个硬件测试设置,其中多达255个节点通过USB连接的虚拟COM端口向我的windows系统发送跟踪消息。实际上,我使用了一个小型Python脚本,它在所有打开的串行端口上运行轮询循环,并在零超时的情况下执行读线。读取行打印时添加了COM端口源和时间戳到控制台。这在几乎实时的情况下工作得相当好。但是CPU的使用率是相当高的,正如你所能想象的。因此,我正在寻找一种方法来并行实时监控所有COM端口,而无需轮询

(查找
nonblocking()
)表示有类似于POSIX的select接口,但仅在UNIX操作系统下


有什么想法吗?

我想看看twisted,它可能会奏效。它有一个由反应堆运行的串行端口监视器。(twisted是异步的)

我有一个小型web服务器,它可以监视和与一个JeeNode(arduino clone)通信,接收数据馈送,并将数据发送到远程无线节点。你可以在这里看到这段代码的早期剪辑(有点粗糙,但你会明白的)


然而,这并不是在处理任何接近相同流量或端口数的地方,但它不是轮询,因此我不确定它是否会扩展,但它确实值得一试

为什么不能为每个com端口使用单独的线程,并且每个线程在其com端口上执行阻塞读取?然后使用队列将时间戳数据发送回主线程。