J'ai le code python suivant qui attend des données provenant du port série, et l'écrit dans un fichier.Plusieurs écritures dans le fichier
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
Il fonctionne dans une certaine mesure, comme après un certain temps, il commence à se bloquer, ce qui porte le CPU tout le chemin, et ne pas écrire quoi que ce soit (ou d'écrire parfois que des morceaux de texte) au fichier .log.
Le processus ici est assez intensif, car mon port série écrira une chaîne de 8 octets chaque seconde, et ce script python est censé le recevoir et écrire son contenu dans le fichier journal.
Je pense que le problème ici est le fait que j'ouvre et ferme trop le fichier, ce qui rend l'ensemble du processus lent. Je ne suis pas un python wizz, donc toute aide ou conseil sur l'amélioration de ce code serait grandement apprécié.
Merci à l'avance,
8 octets par seconde n'est pas très intense; 8 MiB/s peuvent être intensifs, mais la plupart des processeurs peuvent même faire face à cela. Même un Z80 fonctionnant à 4 MHz ne trouverait pas 8 octets par seconde intensifs. –
Je me rends compte que ce n'est pas très intensif, mais en quelque sorte ce code cesse de répondre après un certain temps, et arrête de stocker quoi que ce soit. Je dis intensif, car il va continuer à essayer d'écrire des choses en série, même si le script python n'écrit rien dans le fichier texte –
Le code semble lire à partir du périphérique série, ne pas écrire. –