Ich habe folgende Python-Code in Datei, die Daten aus dem seriellen Port kommenden erwartet, und schreibt sie in eine Datei.Mehrere schreibt
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
Es in einem Ausmaß, wie es nach einiger Zeit arbeitet, beginnt es zu hängen, bis die CPU den ganzen Weg zu bringen, und nichts zu schreiben (oder manchmal nur Textstücke zu schreiben) in die Logdatei.
Der Prozess hier ist ziemlich intensiv, da meine serielle Schnittstelle eine 8-Byte-Zeichenfolge jede Sekunde schreiben wird, und dieses Python-Skript soll es dann empfangen und seinen Inhalt in die Protokolldatei schreiben.
ich das Problem hier denke, ist die Tatsache, dass ich das Öffnen und Schließen der Datei zu viel, und das irgendwie macht den gesamten Prozess langsam. Ich bin kein Python-Wizz, daher würde jede Hilfe oder jeder Ratschlag zur Verbesserung dieses Codes sehr geschätzt werden.
Vielen Dank im Voraus,
8 Byte pro Sekunde nicht sehr intensiv ist; 8 MiB/s mögen intensiv sein, aber die meisten CPUs können damit zurechtkommen. Selbst ein Z80, der mit 4 MHz läuft, würde 8 Bytes pro Sekunde nicht intensiv finden. –
Ich weiß, dass es nicht sehr intensiv ist, aber irgendwie reagiert dieser Code nach einiger Zeit nicht mehr und speichert nichts mehr. Ich sage intensiv, weil es versuchen wird, Zeug in serielle zu schreiben, auch wenn das Python-Skript nichts in die Textdatei schreibt –
Der Code sieht aus, vom seriellen Gerät zu lesen, nicht zu schreiben. –