import serial
ser = serial.Serial('COM5', baudrate=9600, parity=serial.PARITY_NONE, timeout=1)
print "connected to: " + ser.portstr
while ser.isOpen():
line = ser.readline().strip()
if len(line)==16:
print "Id number is",line[5:-2]
ser.close()我正在使用Pyserial连接到身份证阅读器,并希望有连续的轮询。如果我打印所有内容,我注意到每次超时都会导致readline存储一个空字符串。上面的代码改善了丑陋/无限输出的问题,但我担心内存使用。由于我重用了"line",我认为这没有问题,但是无限轮询是不是一开始就有问题呢?
谢谢
发布于 2012-03-14 06:54:40
它看起来很好-您不应该在该循环中浪费内存,因为它不会保留对过去行的引用。
对进程进行监视,看看内存消耗是否在一两天内增长,这不会对您造成伤害--但我不会担心。
假设您在一台具有512MB RAM的旧机器上运行此程序,只剩下200MB用于Python进程- readline的超时时间为一秒,每个空字符串对象占用内存中的64字节-您将在大约37天内耗尽RAM。
https://stackoverflow.com/questions/9691129
复制相似问题