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 连接到 ID 读卡器,并希望进行连续轮询。如果我打印所有内容,我注意到每次超时都会导致读取行存储一个空字符串。上面的代码改善了丑陋/无限输出的问题,但我担心内存使用。由于我重复使用"行",我认为那里没有问题,但是开始无限轮询是否存在问题?
谢谢
它看起来不错 - 你不应该在该循环中浪费内存,因为它不会保留对过去行的引用。
监视该过程以查看内存消耗是否在一两天内增长不会伤害您 - 但我不会担心。
假设您正在一台具有 512MB RAM 的旧机器上运行它,并且只剩下 200MB 用于 Python 进程 - 并且读取行的超时需要一秒钟,并且每个空字符串对象在内存中占用大约 64 个字节 - 您将在大约 37 天内耗尽 RAM。