Писериальный опрос памяти - PullRequest
0 голосов
/ 13 марта 2012
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-карты и хотел бы проводить непрерывный опрос.Если я печатаю все, я замечаю, что каждый тайм-аут заставляет readline хранить пустую строку.Приведенный выше код облегчает проблему некрасивого / бесконечного вывода, но я беспокоюсь об использовании памяти.Так как я повторно использую «линию», я предполагаю, что там нет проблем, но есть ли проблема с неограниченным опросом для начала?

Спасибо

1 Ответ

1 голос
/ 14 марта 2012

Выглядит хорошо - вы не должны тратить память в этом цикле, так как он не сохраняет ссылки на прошлые строки.

Настройка наблюдения за процессом, чтобы увидеть, не повредит ли вам потребление памяти за день или два - но я бы не волновался.

Предположим, вы запускаете это настарая машина с 512 МБ ОЗУ, и только 200 МБ осталось для процесса Python - и что тайм-аут для чтения строки занимает одну секунду, и что каждый пустой строковый объект занимает около 64 байтов в памяти - вам не хватит ОЗУ примерно через 37 дней.

...