ストリームをフィルタとして処理する(つまり、ビットを取得する、プロセスをリンスする)、スラップする(つまり、すべての情報を取得してから処理する)ことに対する効果を比較したいと思います。Pythonでファイルを読む:slurpまたはfilter?
ただし、以下の2つのコードを実行すると、同等の結果が得られます。私はslurpバージョンではるかに悪い結果を得ることを期待していた。
以下のコードスニペットは、上記のように異なる処理を行っていますか?それらが同等であれば、どのようにフィルタ/スラップの差をテストするためにそれらの1つを適合させることができますか?
私は、スクリプトをテストしていた。
jot 100000000 | time python3 dont_slurp.py > /dev/null
jot 100000000 | time python3 slurp.py > /dev/null
Jot
は1からのxに番号を生成します。コードスニペットは行を数値化するだけです。
フィルタ:
import sys
lineno = 0
for line in sys.stdin:
lineno += 1
print("{:>6} {}".format(lineno, line[:-1]))
SLURP:すべての
import sys
f = sys.stdin
lineno = 0
for line in f:
lineno += 1
print('{:>6} {}'.format(lineno, line[:-1]))
「Slurp」バージョンは、あなたが思う通りのことをしていません。どちらのバージョンも一度に1行ずつ読み込んでいます。すべての行を一度に読むには 'for line in f.readlines()'を実行します。 –