« en temps réel » (! Car il est évidemment « soft » en temps réel étant donné que vous avez plusieurs processus en cours, et non pas « dur » en temps réel) ne veut pas dire « vous ne peut pas utiliser time.sleep
»: même un tout petit la quantité de sommeil rendra les choses un peu meilleures - essayez d'ajouter un time.sleep(0.01)
dans votre boucle, juste pour donner aux autres processus une meilleure chance de courir. Le manque de sommeil peut effectivement vous faire prendre un temps plus long en donnant aux autres processus très peu de chance de remplir le tuyau!
Au-delà, @ S. Lott a juste à droite: pour le comportement « réel timeoid », vous devez lire sys.stdin
(mais il faut sans doute pas un octet à la fois, en fonction de la plate-forme: généralement sys.stdin.read(1024)
va lire jusqu'à 1024 octets, lorsque sys.stdin
est un tuyau ou une autre « brute » par opposition à « cuit » FD, mais le retour d'octets sont dans le tuyau, si < 100, plutôt que d'attendre - vous pouvez définir la FD à non-bloquant pour aider à assurer que) directement, et effectuer une manipulation de chaîne (par exemple pour mettre des lignes ensemble, les dépouiller, etc) plus tard dans votre code.