簡體   English   中英

Python回車和線程

[英]Python carriage return and thread

因此,我有一個腳本,該腳本將不斷從傳感器讀取數據,打印回車符,然后打印傳感器值。 它將執行此操作,直到raw_input()完成阻止(按Enter)為止。

但是,當我運行它時,我看到的是空格,而不是增加的數字。 當我按Enter鍵時,將打印一個數字,然后程序退出。 如果將\\r替換為\\n ,程序將按預期運行,打印出“傳感器”值( i = i + 1是用於讀取傳感器的占位符),但不會重復使用同一行,而是將其打印出來在新的一行上。 為什么它不適用於\\r 這是完整的代碼:

from threading import Thread
from time import sleep
import sys

running = True

def loop():
        i = 0
        while running:
                sys.stdout.write("\r" + str(i))
                i = i+1
                sleep(0.1)


thread = Thread(target=loop)
thread.start()
raw_input()
running = False
thread.join()

不同之處在於,寫出換行符會刷新通道,而寫回車符(或大多數其他字符)則不會。 通過在write()之后添加顯式刷新,可以得到相同的行為:

sys.stdout.flush()

至於為什么缺乏刷新會導致raw_input()永不返回的原因,我認為這是由於stdout上存在緩沖而導致的。 但是,我無法找到更多詳細信息。

我正在嘗試嘗試使用sys.stdout.flush()刷新輸出,並且可以正常工作。 謝謝大家的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM