Python/PySerial和CPU使用情况

Cra*_*loy 13 python cpu-usage pyserial

我已经创建了一个脚本来监控串口的输出,每半小时接收3-4行数据 - 脚本运行良好,并抓住端口发出的所有内容,这些内容在一天结束时才是最重要的. .

然而,让我感到困惑的是,对于仅监控单个串行端口的程序,CPU使用率似乎相当高,在此脚本运行时,1核心将始终处于100%使用率.

我基本上在这个问题中运行代码的修改版本:pyserial - 如何读取从串行设备发送的最后一行

我已经尝试定期轮询inWaiting()函数并在inWaiting()为0时让它休眠 - 我已经尝试了从1秒到0.001秒的间隔(基本上,我可以尽可能多地使用而不会提高CPU使用率) - 这将成功抓住第一行,但似乎错过了其余的数据.

调整串口的超时似乎对cpu的使用没有任何影响,也没有将监听功能放入它自己的线程中(不是我真的期望差异,但值得尝试).

  • python/pyserial应该使用这么多的CPU吗?(这看起来有点矫枉过正)
  • 我是否在这个任务上浪费时间/我是否应该咬紧牙关并安排脚本在我知道没有数据到来的时间段内睡觉?

ton*_*nfa 14

也许你可以发出一个阻塞read(1)调用,当它成功使用时read(inWaiting()),可以获得正确数量的剩余字节.