У меня есть следующий код Python, который ожидает данные, поступающие из последовательного порта, и записывает их в файл.
import time
import serial
def write_log ( text ):
f = open('logger.log', 'a')
f.write( text )
f.close()
ser = serial.Serial()
ser.port = "/dev/ttyS0"
ser.baudrate = 4800
ser.open()
if ser.isOpen():
while 1:
while ser.inWaiting() <= 0:
time.sleep(1)
response = ser.read(ser.inWaiting())
if len ( response ):
write_log( response )
print response
Работает до такой степени, что через некоторое время начинает зависать, полностью поднимая процессор и ничего не записывая (или иногда записывая только фрагменты текста) в файл .log.
Процесс здесь довольно интенсивный, так как мой последовательный порт будет записывать 8-байтовую строку каждую секунду, и этот сценарий python должен затем получить его и записать его содержимое в файл журнала.
Я думаю, что проблема здесь в том, что я слишком часто открываю и закрываю файл, и это как-то замедляет весь процесс. Я не питон, поэтому любая помощь или совет по улучшению этого кода будет принята с благодарностью.
Заранее спасибо,