我正嘗試使用這一行應該打印所有行被添加到文件/var/log/messages.log
。sys.stdin多長時間產生一次數據?
sudo tail -f /var/log/messages.log | python2 -c 'exec("import sys\n\nfor line in sys.stdin:\n\tprint line")'
爲增加可讀性,Python代碼是:
import sys
for line in sys.stdin:
print line
如果我一個行添加到/var/log/messages.log
,我沒有看到越來越打印任何東西。但是,如果我添加大量數據,我開始獲得輸出。
是否有定義的行爲,發生器sys.stdin
生成data
的頻率?
PS:我的最終目標是瞭解one-liner,它輸出每秒輸入到python程序的行數。
編輯:假設解釋者每隔一秒就會越過這條線if t > e:
?
在我的機器上,鏈接的單行程不能很好地工作。它遭受的問題與您的代碼完全相同 - 報告延遲到file.next()的預讀緩衝區滿足爲止。 –
這不是真正的單線順便說一句。 –
P.S.我已經更新了我的答案,以解釋爲什麼「一班」的工作方式如此;然而,至少在我的電腦上,它仍然遭受同樣的輸入緩衝問題,就像@Robᵩ報道的那樣。 –