Pyserial轮询内存

2024-09-30 01:37:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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”,我想这是没有问题的,但是是否存在一个无限制轮询的问题呢?在

谢谢你


Tags: toimportnonereadlinelinetimeoutserialser
1条回答
网友
1楼 · 发布于 2024-09-30 01:37:51

它看起来很好-您不应该在那个循环中浪费内存,因为它不保留对过去行的引用。在

在这个过程中设置一个观察表,看看内存消耗是否会在一两天内增长,这不会伤害你——但我不担心。在

假设您在一台内存为512MB的旧机器上运行这个程序,Python进程只剩下200MB内存—读线超时需要1秒,每个空字符串对象占用内存64个字节—大约37天内存就用完了。在

相关问题 更多 >

    热门问题