- 310 名前:デフォルトの名無しさん mailto:sage [2021/09/21(火) 18:45:09.80 ID:0Go6zndF0.net]
- テキストファイルの処理で、段落ごとに時間のかかる作業(数時間単位)を回してるのだけど
その対象のテキストファイル(data.txt)は処理中に追加で内容を追記していくようになっている def func() # (ここにすごく時間のかかる処理) end f=File.open("data.txt", 'r:UTF-8'){|f| f.each_line(rs=""){|l| func() } } ここで、f.each_lineの処理って、関数funcを実行している最中は次のループに行かないはずだよね? 動かしていて、どうも先読みしているような挙動を示しているのだけど、funcの処理が終わるまでは 先読みしないように指定ってできる? たとえばテキストの内容が A B C となっていて、段落Aの処理中にBとかCの内容に手を加えたり、新たにDという内容を末尾に加えたりしたい でも、どうもタイミングによって、最初Aだけだった内容でAを処理中にBを加えた時点ではすでに先読みしてて Bの処理を飛ばして、それより時間的にも位置的にも後に追加したCの処理をしたり、あるいはCも飛ばして Dを処理したりしてるような このあたりのファイルポインタの動きを説明してある情報源はない?
|

|