Python / PySerial和CPU使用情况

时间:2009-08-25 14:20:37

标签: python cpu-usage pyserial

我创建了一个脚本来监控串口的输出,每半小时接收3-4行数据 - 脚本运行良好并抓取端口发出的所有内容,在一天结束时是什么事项...

但是,对于一个只监视单个串行端口的程序来说,cpu的使用率似乎相当高,在这个脚本运行时,1个核心的使用率始终为100%。

我基本上在这个问题中运行了代码的修改版本:pyserial - How to Read Last Line Sent from Serial Device

我已经尝试定期轮询inWaiting()函数并在inWaiting()为0时让它休眠 - 我已经尝试了从1秒到0.001秒的间隔(基本上,我可以尽可能不经常开车cpu用法) - 这将成功抓住第一行,但似乎错过了其余的数据。

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

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

2 个答案:

答案 0 :(得分:14)

也许您可以发出阻止read(1)调用,并在成功时使用read(inWaiting())来获取正确数量的剩余字节。

答案 1 :(得分:0)

系统风格的解决方案会更好吗?创建python脚本并通过Cron / Scheduled Task执行它?

pySerial不应该使用那么多的CPU,但如果它只是坐在那里轮询一小时,我可以看到它可能会发生。与周期性的唤醒和民意调查相比,睡觉可能是更好的选择。